From 0498f81865ac116704c5f63ed752e7f87ac32d3a Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sat, 10 Mar 2012 14:59:44 +0000 Subject: [PATCH] New command -rr_reloc_dir --- libisoburn/libisoburn.ver | 1 + xorriso/base_obj.c | 2 + xorriso/opts_d_h.c | 83 +++++++++-------- xorriso/opts_p_z.c | 20 ++++ xorriso/parse_exec.c | 8 +- xorriso/text_io.c | 7 ++ xorriso/write_run.c | 4 + xorriso/xorriso.1 | 20 +++- xorriso/xorriso.h | 7 +- xorriso/xorriso.info | 178 ++++++++++++++++++++---------------- xorriso/xorriso.texi | 22 ++++- xorriso/xorriso_private.h | 2 + xorriso/xorriso_timestamp.h | 2 +- 13 files changed, 232 insertions(+), 124 deletions(-) diff --git a/libisoburn/libisoburn.ver b/libisoburn/libisoburn.ver index 2b841249..b90d5c37 100644 --- a/libisoburn/libisoburn.ver +++ b/libisoburn/libisoburn.ver @@ -240,6 +240,7 @@ Xorriso_option_return_with; Xorriso_option_rmi; Xorriso_option_rollback; Xorriso_option_rom_toc_scan; +Xorriso_option_rr_reloc_dir; Xorriso_option_scdbackup_tag; Xorriso_option_scsi_log; Xorriso_option_session_log; diff --git a/xorriso/base_obj.c b/xorriso/base_obj.c index 08c61835..df799225 100644 --- a/xorriso/base_obj.c +++ b/xorriso/base_obj.c @@ -144,6 +144,8 @@ 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->rr_reloc_dir[0]= 0; + m->rr_reloc_flags= 1; m->untranslated_name_len= 0; m->do_follow_pattern= 1; m->do_follow_param= 0; diff --git a/xorriso/opts_d_h.c b/xorriso/opts_d_h.c index de3e068c..bfece9a0 100644 --- a/xorriso/opts_d_h.c +++ b/xorriso/opts_d_h.c @@ -484,7 +484,7 @@ int Xorriso_option_external_filter(struct XorrisO *xorriso, (*idx)= end_idx; if(end_idx - start_idx < 3) { sprintf(xorriso->info_text, - "-external_filter : Not enough arguments given. Needed: name options path %s", +"-external_filter : Not enough parameters given. Needed: name options path %s", xorriso->list_delimiter); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); return(0); @@ -683,7 +683,7 @@ int Xorriso_option_find(struct XorrisO *xorriso, int argc, char **argv, if(i+1>=end_idx) { not_enough_arguments:; sprintf(xorriso->info_text, - "-find[ix]: not enough arguments with test "); + "-find[ix]: not enough parameters with test "); Text_shellsafe(argv[i], xorriso->info_text, 1); goto sorry_ex; } @@ -815,7 +815,7 @@ not_enough_arguments:; if(i+1>=end_idx) { not_enough_exec_arguments:; sprintf(xorriso->info_text, - "-find[ix]: not enough arguments with -exec "); + "-find[ix]: not enough parameters with -exec "); Text_shellsafe(argv[i], xorriso->info_text, 1); goto sorry_ex; } @@ -1422,14 +1422,18 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) "This program creates, loads, manipulates and writes ISO 9660 filesystem", "images with Rock Ridge extensions. Write targets can be drives with optical", "media or local filesystem objects.", +"The program operations are controlled by a sequence of commands, of which", +"the initial ones are given as program arguments or as lines in startup", +"files. Further commands may get read from files in batch mode or from", +"standard input in dialog mode.", "", " -x Only in effect if given as program argument:", " Execute commands given as program arguments in a sequence", " that most likely makes some sense. Default is to execute", " program arguments exactly in the sequence as given.", "", -"Preparation options:", -"Drive addresses are either /dev/... as listed with option -devices or", +"Preparation commands:", +"Drive addresses are either /dev/... as listed with command -devices or", "disk files, eventually with prefix \"stdio:\" if non-CD-drive in /dev tree.", "E.g. /dev/sr0 , /tmp/pseudo_drive , stdio:/dev/sdc", " -dev address Set input and output drive and load eventual ISO image.", @@ -1525,6 +1529,10 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -compliance rule[:rule...]", " Allow more or less harmless deviations from strict standards", " compliance.", +" -rr_reloc_dir name", +" Specifies name of relocation directory in root directory,", +" to which deep subtrees will get relocated if -compliance", +" is set to \"deep_paths_off\".", " -boot_image \"any\"|\"isolinux\"|\"grub\"", " |\"discard\"|\"keep\"|\"patch\"|\"dir=\"|\"bin_path=\"", " |\"cat_path=\"|\"cat_hidden=on|iso_rr|joliet|off\"", @@ -1577,23 +1585,23 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " Print foreseeable available space on output medium", " -pvd_info Print various id strings of the loaded ISO image." "", -"Options with variable length path list [...] need the list delimiter text", -"as end mark if they are followed by another option. By default this delimiter", -"is \"--\". In dialog and with options read from files, the line end serves", -"as such a mark. With program arguments this mark can be omitted only with", -"the last option in the list of arguments.", +"Commands with variable length path list [...] need the list delimiter text", +"as end mark if they are followed by another command. By default this", +"delimiter is \"--\". In dialog and with commands read from files, the line", +"end serves as such a mark. With program arguments this mark can be omitted", +"only with the last command in the list of program arguments.", "For brevity the list delimiter is referred as \"--\" throughout this text.", "", " -list_delimiter text Set the list delimiter to be used instead of \"--\"", " It has to be a single word, must not be empty, not longer", " than 80 characters, may mot contain quotation marks.", "", -"Manipulation options:", +"Manipulation commands:", "disk_path is a path to an object in the local filesystem tree.", "iso_rr_path is the Rock Ridge name of a file object in the ISO image.", "pathspec is either a disk_path or (if allowed) a pair: iso_rr_path=disk_path", -"Options marked by [***] have variable argument length and perform pattern", -"expansion if enabled by -iso_rr_pattern resp. -disk_pattern.", +"Commands marked by [***] have variable length parameter lists and perform", +"pattern expansion if enabled by -iso_rr_pattern resp. -disk_pattern.", "", " -pathspecs \"on\"|\"off\" Allow or disallow pathspecs of form ", " iso_rr_path=disk_path . Only \"off\" allows eventual", @@ -1634,8 +1642,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -rm_r iso_rr_path [***]", " Delete the given directory trees from ISO image.", " -mv iso_rr_path [***] iso_rr_path", -" Rename the given file objects in the ISO tree to the last", -" argument in the list.", +" Rename the given file objects in the ISO tree to iso_rr_path.", " -chown uid iso_rr_path [***]", " Equivalent to chown in the ISO image.", " -chown_r uid iso_rr_path [***]", @@ -1690,7 +1697,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " getfacl, setfacl, getfattr, setfattr, get_any_xattr,", " list_extattr, get_md5, check_md5, make_md5,", " set_filter, show_stream, mkisofs_r, hide, find.", -" params are their arguments except iso_rr_path.", +" params are their parameters except iso_rr_path.", " -mkdir iso_rr_path [...]", " Create empty directories if they do not exist yet.", " -rmdir iso_rr_path [***]", @@ -1700,8 +1707,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -cp_clone iso_rr_path_original [***] iso_rr_path_dest", " Create ISO to ISO copies according to the rules of cp -r.", "", -" -- Default list delimiter marking the end of action argument", -" list. It may be changed by option -list_delimiter.", +" -- Default list delimiter marking the end of command parameter", +" lists. It may be changed by command -list_delimiter.", "", " -not_paths disk_path [***]", " Add the given paths to the list of excluded absolute paths.", @@ -1724,7 +1731,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " If \"on\" then ask the user for \"y\" or \"n\" with any", " file before deleting or overwriting it in the ISO image.", "", -"Filter options:", +"Filter commands:", "External filter processes may produce synthetic file content by reading the", "original content from stdin and writing to stdout whatever they want.", @@ -1760,7 +1767,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " Set global zisofs parameters:", " level=0|...|9 , block_size=32k|64k|128k , by_magic=on|off", "", -"Write-to-media options:", +"Write-to-media commands:", " -rollback Discard the manipulated ISO image and reload it.", "", " -changes_pending \"no\"|\"yes\"|\"mkisofs_printed\"|\"show_status\"", @@ -1769,7 +1776,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -commit Perform the write operation if changes are pending.", " Then perform -dev outdrive.", " Hint: To perform a final write operation with no new -dev", -" and no new loading of image, execute option -end.", +" and no new loading of image, execute command -end.", " -commit_eject \"in\"|\"out\"|\"all\"|\"none\"", " Like -commit but rather eject than load image from outdrive.", " Give up any unejected drive afterwards.", @@ -1794,7 +1801,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " Immediately eject the medium in -indev, resp. -outdev,", " resp. both.", "", -"Navigation options:", +"Navigation commands:", "", " -cd iso_rr_path Change working directory in the ISO image. iso_rr_paths", " which do not begin with '/' will be inserted beginning at", @@ -1862,7 +1869,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -show_stream_r iso_rr_path [***]", " Like -show_stream but affecting all files below directories.", "", -"Restore options which copy file objects from ISO image to disk filesystem:", +"Restore commands which copy file objects from ISO image to disk filesystem:", " -osirrox \"on\"|\"device_files\"|\"off\"|\"banned\"", " [:\"concat_split_on\"|\"concat_split_off\"]", " [:\"auto_chmod_on\"|\"auto_chmod_off\"]", @@ -1911,7 +1918,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -check_media_defaults [options] --", " Preset options for runs of -check_media and -extract_cut.", "", -"Compatibility emulation (argument list may be ended by list delimiter --):", +"Compatibility emulation (option list may be ended by list delimiter --):", " -as mkisofs [-help|-version|-o|-R|-r|-J|-V|-P|-f|-m|-exclude-list|", " -no-pad|-M|-C|-graft-points|-path-list|pathspecs|-z|", " -no-emul-boot|-b|-c|-boot-info-table|-boot-load-size|-G|...]", @@ -1927,7 +1934,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -pacifier \"xorriso\"|\"cdrecord\"|\"mkisofs\"", " Choose format of UPDATE pacifier during write operations.", "", -"General options:", +"General commands:", " -help Print this text", " -abort_on severity Set the threshhold for events to abort the program.", " Useful severities: NEVER, ABORT, FATAL, FAILURE, SORRY, WARNING", @@ -1942,7 +1949,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " Behavior \"best_effort\" is most endurant but may produce", " results which are correct only on the first glimpse.", " -dialog \"on\"|\"off\"|\"single_line\"", -" After all arguments are processed, enter dialog mode.", +" After all program arguments are processed, enter dialog mode.", " \"single_line\" does not support newline characters within", " open quotation marks and no line continuation by trailing \\.", " -page len width Prompt user after len output lines (0=no prompt).", @@ -1971,16 +1978,16 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -logfile channel fileaddress Copy output of a channel to the given file.", " channel may be 'R','I','M' as with -pkt_output or '.'", " for the consolidated -pkt_output stream.", -" -mark text If text is not empty it will get put out each time an", -" option is completed.", +" -mark text If text is not empty it will get put out each time a command", +" is completed.", " -temp_mem_limit number[\"k\"|\"m\"]", " Set the maximum size for pattern expansion. (Default is 16m)", " -prog text Use text as this program's name in subsequent messages", " -prog_help text Use text as this program's name and perform -help", -" -status mode|filter Report the current settings of persistent options.", +" -status mode|filter Report the current settings of persistent commands.", " Modes:", -" short... print only important or altered options", -" long ... print options even if they have default settings", +" short... print only important or altered settings", +" long ... print settings even if they have default values", " long_history like long plus -history: lines", " Filters begin with '-' and are compared literally against the", " output lines of -status long_history. A line is put out only", @@ -1988,10 +1995,11 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -status_history_max number Maximum number of history lines to be reported", " with -status:long_history", " -options_from_file fileaddress", -" Reads lines from the given file and executes them as program", -" options.", -" -no_rc Only if used as first command line argument this option", -" prevents reading and interpretation of startup files.", +" Reads lines from the given file and executes them as commands.", +" -no_rc Only if used as first program argument, this command", +" prevents reading and interpretation of these startup files:", +" /etc/default/xorriso , /etc/opt/xorriso/rc", +" /etc/xorriso/xorriso.conf , $HOME/.xorrisorc", " -print text", " Print a text to result channel.", " -print_info text", @@ -2023,13 +2031,12 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " End program. Discard pending changes.", "", "", -"Option -page causes a user prompt after the given number of result lines.", +"Command -page causes a user prompt after the given number of result lines.", "Empty input resumes output until the next prompt. Other input may be:", " @ suppresses paging until the current action is done", " @@ suppresses further result output but continues the action", " @@@ aborts the current action", -" other aborts the current action and executes input as new", -" option", +" other aborts the current action and executes input as new command", "", #endif /* ! Xorriso_no_helP */ diff --git a/xorriso/opts_p_z.c b/xorriso/opts_p_z.c index 73958e4b..61459ce4 100644 --- a/xorriso/opts_p_z.c +++ b/xorriso/opts_p_z.c @@ -636,6 +636,26 @@ unknown_mode:; } +/* Command -rr_reloc_dir */ +int Xorriso_option_rr_reloc_dir(struct XorrisO *xorriso, char *name, int flag) +{ + if(strlen(name) > 255) { + sprintf(xorriso->info_text, + "Name too long with -rr_reloc_dir. Max. 255 bytes allowed."); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + return(0); + } + if(strchr(name, '/') != NULL) { + sprintf(xorriso->info_text, + "Name given with -rr_reloc_dir contains '/' character"); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + return(0); + } + strcpy(xorriso->rr_reloc_dir, name); + return(1); +} + + /* Option -scdbackup_tag list_path record_name */ int Xorriso_option_scdbackup_tag(struct XorrisO *xorriso, char *listname, char *recname, int flag) diff --git a/xorriso/parse_exec.c b/xorriso/parse_exec.c index 22d6b1a5..9a990807 100644 --- a/xorriso/parse_exec.c +++ b/xorriso/parse_exec.c @@ -473,7 +473,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv, "pacifier","padding","path_list","pathspecs","pkt_output", "preparer_id","print","print_info","print_mark","prompt", "prog","prog_help","publisher","quoted_not_list","quoted_path_list", - "reassure","report_about","rom_toc_scan","scsi_log", + "reassure","report_about","rom_toc_scan","rr_reloc_dir","scsi_log", "session_log","signal_handling","sleep", "speed","split_size","status","status_history_max", "stdio_sync","stream_recording","system_id","temp_mem_limit", @@ -658,7 +658,7 @@ int Xorriso_cmd_sorting_rank(struct XorrisO *xorriso, "mount", "* Settings for result writing:", - "joliet", "compliance", "volid", "volset_id", "publisher", + "joliet", "compliance", "rr_reloc_dir", "volid", "volset_id", "publisher", "application_id", "system_id", "volume_date", "copyright_file", "abstract_file", "biblio_file", "preparer_id", "out_charset", "read_mkisofsrc", @@ -1559,6 +1559,10 @@ next_command:; (*idx)++; Xorriso_option_rom_toc_scan(xorriso, arg1, 0); + } else if(strcmp(cmd,"rr_reloc_dir")==0) { + (*idx)++; + Xorriso_option_rr_reloc_dir(xorriso, arg1, 0); + } else if(strcmp(cmd,"scdbackup_tag")==0) { (*idx)+= 2; ret= Xorriso_option_scdbackup_tag(xorriso, arg1, arg2, 0); diff --git a/xorriso/text_io.c b/xorriso/text_io.c index f2949099..3c611fd8 100644 --- a/xorriso/text_io.c +++ b/xorriso/text_io.c @@ -1881,6 +1881,13 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag) if(!(is_default && no_defaults)) Xorriso_status_result(xorriso,filter,fp,flag&2); + is_default= (xorriso->rr_reloc_dir[0] == 0); + sprintf(line, "-rr_reloc_dir "); + Text_shellsafe(xorriso->rr_reloc_dir, line, 1); + strcat(line, "\n"); + if(!(is_default && no_defaults)) + Xorriso_status_result(xorriso,filter,fp,flag&2); + is_default= (xorriso->assert_volid[0] == 0); sprintf(line, "-assert_volid "); Text_shellsafe(xorriso->assert_volid, line, 1); diff --git a/xorriso/write_run.c b/xorriso/write_run.c index 8d65d4c9..1b60308e 100644 --- a/xorriso/write_run.c +++ b/xorriso/write_run.c @@ -825,6 +825,10 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag) ext|= isoburn_igopt_no_emul_toc; isoburn_igopt_set_extensions(sopts, ext); isoburn_igopt_set_relaxed(sopts, relax); + ret = isoburn_igopt_set_rr_reloc(sopts, xorriso->rr_reloc_dir, + xorriso->rr_reloc_flags); + if(ret <= 0) + {ret= 0; goto ex;} ret= isoburn_igopt_set_untranslated_name_len(sopts, xorriso->untranslated_name_len); if(ret <= 0) diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index 216f1807..2401edaf 100644 --- a/xorriso/xorriso.1 +++ b/xorriso/xorriso.1 @@ -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.1, Feb 05, 2012" +.TH XORRISO 1 "Version 1.2.1, Mar 10, 2012" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -2280,6 +2280,24 @@ Default setting is Note: The term "ISO file" means the plain ISO 9660 names and attributes which get visible if the reader ignores Rock Ridge. .TP +\fB\-rr_reloc_dir\fR name +Specify the name of the relocation directory in which deep directory subtrees +shall be placed if \-compliance is set to "deep_paths_off". A deep directory +is one that has a chain of 8 parent directories (including root) above itself. +.br +The overall directory tree will appear originally deep when interpreted +as Rock Ridge tree. It will appear as re\-arranged if only ECMA\-119 +information is considered. +.br +The default relocation directory is the root directory. By giving a non\-empty +name with \-rr_reloc_dir, a directory in the root directory may get this role. +If that directory does not already exist at \-commit time, then it will get +created and marked for Rock Ridge as relocation artefact. At least on +GNU/Linux it will not be displayed in mounted Rock Ridge images. +.br +The name must not contain a '/' character and must not be longer than +255 bytes. +.TP \fB\-volid\fR text Specify the volume ID. \fBxorriso\fR accepts any text up to 32 characters, but according to rarely obeyed specs stricter rules apply: diff --git a/xorriso/xorriso.h b/xorriso/xorriso.h index c0a8adf1..90088154 100644 --- a/xorriso/xorriso.h +++ b/xorriso/xorriso.h @@ -1167,8 +1167,11 @@ int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv, int Xorriso_option_rollback(struct XorrisO *xorriso, int flag); /* Command -rom_toc_scan */ -int Xorriso_option_rom_toc_scan(struct XorrisO *xorriso, char *mode, - int flag); +int Xorriso_option_rom_toc_scan(struct XorrisO *xorriso, char *mode, int flag); + +/* Command -rr_reloc_dir */ +/* @since 1.2.2 */ +int Xorriso_option_rr_reloc_dir(struct XorrisO *xorriso, char *name, int flag); /* Command -scdbackup_tag */ int Xorriso_option_scdbackup_tag(struct XorrisO *xorriso, char *list_path, diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index 0b230aa7..2382405d 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -2035,6 +2035,23 @@ will be written according to the setting of command -acl. Note: The term "ISO file" means the plain ISO 9660 names and attributes which get visible if the reader ignores Rock Ridge. +-rr_reloc_dir name + Specify the name of the relocation directory in which deep + directory subtrees shall be placed if -compliance is set to + "deep_paths_off". A deep directory is one that has a chain of 8 + parent directories (including root) above itself. + The overall directory tree will appear originally deep when + interpreted as Rock Ridge tree. It will appear as re-arranged if + only ECMA-119 information is considered. + The default relocation directory is the root directory. By giving + a non-empty name with -rr_reloc_dir, a directory in the root + directory may get this role. If that directory does not already + exist at -commit time, then it will get created and marked for + Rock Ridge as relocation artefact. At least on GNU/Linux it will + not be displayed in mounted Rock Ridge images. + The name must not contain a '/' character and must not be longer + than 255 bytes. + -volid text Specify the volume ID. `xorriso' accepts any text up to 32 characters, but according to rarely obeyed specs stricter rules @@ -4322,7 +4339,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * # starts a comment line: Scripting. (line 162) * -abort_on controls abort on error: Exception. (line 27) -* -abstract_file sets abstract file name: SetWrite. (line 165) +* -abstract_file sets abstract file name: SetWrite. (line 182) * -acl controls handling of ACLs: Loading. (line 143) * -add inserts one or more paths: Insert. (line 42) * -add_plainly inserts one or more paths: Insert. (line 61) @@ -4330,13 +4347,13 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -alter_date_r sets timestamps in ISO image: Manip. (line 167) * -append_partition adds arbitrary file after image end: Bootable. (line 199) -* -application_id sets application id: SetWrite. (line 124) +* -application_id sets application id: SetWrite. (line 141) * -as emulates mkisofs or cdrecord: Emulation. (line 13) * -assert_volid rejects undesired images: Loading. (line 84) * -auto_charset learns character set from image: Loading. (line 98) * -backslash_codes enables backslash conversion: Scripting. (line 67) * -ban_stdio_write demands real drive: Loading. (line 247) -* -biblio_file sets biblio file name: SetWrite. (line 172) +* -biblio_file sets biblio file name: SetWrite. (line 189) * -blank erases media: Writing. (line 61) * -boot_image controls bootability: Bootable. (line 26) * -calm_drive reduces drive activity: Loading. (line 236) @@ -4355,7 +4372,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -chown sets ownership in ISO image: Manip. (line 42) * -chown_r sets ownership in ISO image: Manip. (line 47) * -clone copies ISO directory tree: Insert. (line 171) -* -close controls media closing: SetWrite. (line 267) +* -close controls media closing: SetWrite. (line 284) * -close_damaged closes damaged track and session: Writing. (line 152) * -close_filter_list bans filter registration: Filter. (line 52) * -commit writes pending ISO image: Writing. (line 29) @@ -4364,7 +4381,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -compare_l reports ISO/disk differences: Navigate. (line 164) * -compare_r reports ISO/disk differences: Navigate. (line 159) * -compliance controls standard compliance: SetWrite. (line 14) -* -copyright_file sets copyright file name: SetWrite. (line 159) +* -copyright_file sets copyright file name: SetWrite. (line 176) * -cp_clone copies ISO directory tree: Insert. (line 183) * -cp_rx copies file trees to disk: Restore. (line 108) * -cpax copies files to disk: Restore. (line 104) @@ -4381,11 +4398,11 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top (line 36) * -drive_class controls drive accessability: Loading. (line 54) * -du show directory size in ISO image: Navigate. (line 89) -* -dummy controls write simulation: SetWrite. (line 256) +* -dummy controls write simulation: SetWrite. (line 273) * -dus show directory size in ISO image: Navigate. (line 93) * -dusx show directory size on disk: Navigate. (line 102) * -dux show directory size on disk: Navigate. (line 97) -* -dvd_obs set write block size: SetWrite. (line 243) +* -dvd_obs set write block size: SetWrite. (line 260) * -early_stdio_test classifies stdio drives: Loading. (line 252) * -eject ejects drive tray: Writing. (line 52) * -end writes pending session and ends program: Scripting. (line 156) @@ -4403,12 +4420,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -follow softlinks and mount points: SetInsert. (line 76) * -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 185) * -format formats media: Writing. (line 88) -* -fs sets size of fifo: SetWrite. (line 260) +* -fs sets size of fifo: SetWrite. (line 277) * -getfacl shows ACL in ISO image: Navigate. (line 70) * -getfacl_r shows ACL in ISO image: Navigate. (line 77) * -getfattr shows xattr in ISO image: Navigate. (line 81) * -getfattr_r shows xattr in ISO image: Navigate. (line 85) -* -gid sets global ownership: SetWrite. (line 200) +* -gid sets global ownership: SetWrite. (line 217) * -grow_blindly overides next writeable address: AqDrive. (line 46) * -hardlinks controls handling of hard links: Loading. (line 110) * -help prints help text: Scripting. (line 20) @@ -4454,17 +4471,17 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -not_paths sets absolute exclusion paths: SetInsert. (line 55) * -options_from_file reads commands from file: Scripting. (line 12) * -osirrox enables ISO-to-disk copying: Restore. (line 18) -* -out_charset sets output character set: SetWrite. (line 190) +* -out_charset sets output character set: SetWrite. (line 207) * -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) -* -padding sets amount or mode of image padding: SetWrite. (line 273) +* -padding sets amount or mode of image padding: SetWrite. (line 290) * -page set terminal geometry: DialogCtl. (line 19) * -paste_in copies file into disk file: Restore. (line 121) * -path_list inserts paths from disk file: Insert. (line 75) * -pathspecs sets meaning of = with -add: SetInsert. (line 118) * -pkt_output consolidates text output: Frontend. (line 7) -* -preparer_id sets preparer id: SetWrite. (line 178) +* -preparer_id sets preparer id: SetWrite. (line 195) * -print prints result text line: Scripting. (line 99) * -print_info prints message text line: Scripting. (line 102) * -print_mark prints synchronizing text line: Scripting. (line 105) @@ -4472,7 +4489,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -prog sets program name: Frontend. (line 30) * -prog_help prints help text: Frontend. (line 33) * -prompt prompts for enter key: Scripting. (line 110) -* -publisher sets publisher id: SetWrite. (line 118) +* -publisher sets publisher id: SetWrite. (line 135) * -pvd_info shows image id strings: Inquiry. (line 93) * -pwd tells working directory in ISO: Navigate. (line 20) * -pwdx tells working directory on disk: Navigate. (line 23) @@ -4489,6 +4506,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -rollback discards pending changes: Writing. (line 9) * -rollback_end ends program without writing: Scripting. (line 159) * -rom_toc_scan searches for sessions: Loading. (line 211) +* -rr_reloc_dir sets name of relocation directory: SetWrite. + (line 94) * -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 168) * -scsi_log reports SCSI commands: Scripting. (line 147) * -session_log logs written sessions: Scripting. (line 138) @@ -4506,29 +4525,29 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -signal_handling controls handling of system signals: Exception. (line 69) * -sleep waits for a given time span: Scripting. (line 114) -* -speed set write speed: SetWrite. (line 216) +* -speed set write speed: SetWrite. (line 233) * -split_size enables large file splitting: SetInsert. (line 140) * -status shows current settings: Scripting. (line 47) * -status_history_max curbs -status history: Scripting. (line 56) -* -stdio_sync controls stdio buffer: SetWrite. (line 250) -* -stream_recording controls defect management: SetWrite. (line 231) -* -system_id sets system id: SetWrite. (line 133) +* -stdio_sync controls stdio buffer: SetWrite. (line 267) +* -stream_recording controls defect management: SetWrite. (line 248) +* -system_id sets system id: SetWrite. (line 150) * -tell_media_space reports free space: Inquiry. (line 89) * -temp_mem_limit curbs memory consumption: Scripting. (line 92) * -toc shows list of sessions: Inquiry. (line 28) -* -uid sets global ownership: SetWrite. (line 196) +* -uid sets global ownership: SetWrite. (line 213) * -update inserts path if different: Insert. (line 99) * -update_l inserts paths if different: Insert. (line 121) * -update_r inserts paths if different: Insert. (line 110) * -use_readline enables readline for dialog: DialogCtl. (line 28) * -version prints help text: Scripting. (line 23) -* -volid sets volume id: SetWrite. (line 94) -* -volset_id sets volume set id: SetWrite. (line 113) -* -volume_date sets volume timestamp: SetWrite. (line 140) +* -volid sets volume id: SetWrite. (line 111) +* -volset_id sets volume set id: SetWrite. (line 130) +* -volume_date sets volume timestamp: SetWrite. (line 157) * -x enables automatic execution order of arguments: ArgSort. (line 16) * -xattr controls handling of xattr (EA): Loading. (line 151) -* -zisofs controls zisofs production: SetWrite. (line 204) +* -zisofs controls zisofs production: SetWrite. (line 221)  File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top @@ -4561,7 +4580,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Character Set, _definition: Charset. (line 6) * Character Set, for input, -in_charset: Loading. (line 92) * Character Set, for input/output, -charset: Charset. (line 43) -* Character Set, for output, -out_charset: SetWrite. (line 190) +* Character Set, for output, -out_charset: SetWrite. (line 207) * Character set, learn from image, -auto_charset: Loading. (line 98) * Character Set, of terminal, -local_charset: Charset. (line 47) * Closed media, _definition: Media. (line 43) @@ -4615,8 +4634,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Filter, show chain, -show_stream: Navigate. (line 169) * Filter, show chains of tree, -show_stream_r: Navigate. (line 183) * Filter, unregister, -unregister_filter: Filter. (line 48) -* Filter, zisofs parameters, -zisofs: SetWrite. (line 204) -* Group, global in ISO image, -gid: SetWrite. (line 200) +* Filter, zisofs parameters, -zisofs: SetWrite. (line 221) +* Group, global in ISO image, -gid: SetWrite. (line 217) * Group, in ISO image, -chgrp: Manip. (line 50) * Group, in ISO image, -chgrp_r: Manip. (line 55) * Growing, _definition: Methods. (line 19) @@ -4626,16 +4645,16 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Image, demand volume id, -assert_volid: Loading. (line 84) * Image, discard pending changes, -rollback: Writing. (line 9) * Image, override change status, -changes_pending: Writing. (line 13) -* Image, set abstract file name, -abstract_file: SetWrite. (line 165) -* Image, set application id, -application_id: SetWrite. (line 124) -* Image, set biblio file name, -biblio_file: SetWrite. (line 172) -* Image, set copyright file name, -copyright_file: SetWrite. (line 159) -* Image, set preparer id, -preparer_id: SetWrite. (line 178) -* Image, set publisher id, -publisher: SetWrite. (line 118) -* Image, set system id, -system_id: SetWrite. (line 133) -* Image, set volume id, -volid: SetWrite. (line 94) -* Image, set volume set id, -volset_id: SetWrite. (line 113) -* Image, set volume timestamp, -volume_date: SetWrite. (line 140) +* Image, set abstract file name, -abstract_file: SetWrite. (line 182) +* Image, set application id, -application_id: SetWrite. (line 141) +* Image, set biblio file name, -biblio_file: SetWrite. (line 189) +* Image, set copyright file name, -copyright_file: SetWrite. (line 176) +* Image, set preparer id, -preparer_id: SetWrite. (line 195) +* Image, set publisher id, -publisher: SetWrite. (line 135) +* Image, set system id, -system_id: SetWrite. (line 150) +* Image, set volume id, -volid: SetWrite. (line 111) +* Image, set volume set id, -volset_id: SetWrite. (line 130) +* Image, set volume timestamp, -volume_date: SetWrite. (line 157) * Image, show id strings, -pvd_info: Inquiry. (line 93) * Insert, enable overwriting, -overwrite: SetInsert. (line 127) * Insert, file exclusion absolute, -not_paths: SetInsert. (line 55) @@ -4693,7 +4712,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Navigate, tell ISO working directory, -pwd: Navigate. (line 20) * Next writeable address, -grow_blindly: AqDrive. (line 46) * Overwriteable media, _definition: Media. (line 14) -* Ownership, global in ISO image, -uid: SetWrite. (line 196) +* Ownership, global in ISO image, -uid: SetWrite. (line 213) * Ownership, in ISO image, -chown: Manip. (line 42) * Ownership, in ISO image, -chown_r: Manip. (line 47) * Partition offset, _definiton: Bootable. (line 146) @@ -4736,6 +4755,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Program, wait a time span, -sleep: Scripting. (line 114) * Quoted input, _definiton: Processing. (line 46) * Recovery, retrieve blocks, -check_media: Verify. (line 21) +* Relocation directory, set name, -rr_reloc_dir: SetWrite. (line 94) * Rename, in ISO image, -mv: Manip. (line 35) * Restore, copy file into disk file, -paste_in: Restore. (line 121) * Restore, copy file piece to disk, -extract_cut: Restore. (line 81) @@ -4772,22 +4792,22 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Verify, file checksum, -check_md5: Verify. (line 148) * Verify, file tree checksums, -check_md5_r: Verify. (line 164) * Verify, preset -check_media, -check_media_defaults: Verify. (line 41) -* Write, block size, -dvd_obs: SetWrite. (line 243) +* Write, block size, -dvd_obs: SetWrite. (line 260) * Write, bootability, -boot_image: Bootable. (line 26) -* Write, buffer syncing, -stdio_sync: SetWrite. (line 250) -* Write, close media, -close: SetWrite. (line 267) +* Write, buffer syncing, -stdio_sync: SetWrite. (line 267) +* Write, close media, -close: SetWrite. (line 284) * Write, compliance to specs, -compliance: SetWrite. (line 14) -* Write, defect management, -stream_recording: SetWrite. (line 231) +* Write, defect management, -stream_recording: SetWrite. (line 248) * Write, enable Joliet, -joliet: SetWrite. (line 10) -* Write, fifo size, -fs: SetWrite. (line 260) +* Write, fifo size, -fs: SetWrite. (line 277) * Write, free space, -tell_media_space: Inquiry. (line 89) * Write, log problematic disk files, -errfile_log: Scripting. (line 118) * Write, log written sessions, -session_log: Scripting. (line 138) -* Write, padding image, -padding: SetWrite. (line 273) +* Write, padding image, -padding: SetWrite. (line 290) * Write, pending ISO image, -commit: Writing. (line 29) * Write, predict image size, -print_size: Inquiry. (line 80) -* Write, set speed, -speed: SetWrite. (line 216) -* Write, simulation, -dummy: SetWrite. (line 256) +* Write, set speed, -speed: SetWrite. (line 233) +* Write, simulation, -dummy: SetWrite. (line 273) * xattr, _definiton: Extras. (line 54) * xattr, control handling, -xattr: Loading. (line 151) * xattr, set in ISO image, -setfattr: Manip. (line 111) @@ -4819,40 +4839,40 @@ Node: CmdFind71249 Node: Filter83358 Node: Writing87913 Node: SetWrite96877 -Node: Bootable111210 -Node: Jigdo124432 -Node: Charset128678 -Node: Exception131439 -Node: DialogCtl137558 -Node: Inquiry140155 -Node: Navigate145021 -Node: Verify153282 -Node: Restore161971 -Node: Emulation168880 -Node: Scripting178691 -Node: Frontend185851 -Node: Examples187151 -Node: ExDevices188328 -Node: ExCreate188987 -Node: ExDialog190272 -Node: ExGrowing191537 -Node: ExModifying192342 -Node: ExBootable192846 -Node: ExCharset193398 -Node: ExPseudo194219 -Node: ExCdrecord195117 -Node: ExMkisofs195434 -Node: ExGrowisofs196774 -Node: ExException197909 -Node: ExTime198363 -Node: ExIncBackup198822 -Node: ExRestore202813 -Node: ExRecovery203773 -Node: Files204343 -Node: Seealso205642 -Node: Bugreport206365 -Node: Legal206946 -Node: CommandIdx207876 -Node: ConceptIdx223255 +Node: Bootable112152 +Node: Jigdo125374 +Node: Charset129620 +Node: Exception132381 +Node: DialogCtl138500 +Node: Inquiry141097 +Node: Navigate145963 +Node: Verify154224 +Node: Restore162913 +Node: Emulation169822 +Node: Scripting179633 +Node: Frontend186793 +Node: Examples188093 +Node: ExDevices189270 +Node: ExCreate189929 +Node: ExDialog191214 +Node: ExGrowing192479 +Node: ExModifying193284 +Node: ExBootable193788 +Node: ExCharset194340 +Node: ExPseudo195161 +Node: ExCdrecord196059 +Node: ExMkisofs196376 +Node: ExGrowisofs197716 +Node: ExException198851 +Node: ExTime199305 +Node: ExIncBackup199764 +Node: ExRestore203755 +Node: ExRecovery204715 +Node: Files205285 +Node: Seealso206584 +Node: Bugreport207307 +Node: Legal207888 +Node: CommandIdx208818 +Node: ConceptIdx224333  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index 9e414a74..b23580d2 100644 --- a/xorriso/xorriso.texi +++ b/xorriso/xorriso.texi @@ -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.1, Feb 05, 2012" +@c man .TH XORRISO 1 "Version 1.2.1, Mar 10, 2012" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -2719,6 +2719,26 @@ Default setting is Note: The term "ISO file" means the plain ISO 9660 names and attributes which get visible if the reader ignores Rock Ridge. @c man .TP +@item -rr_reloc_dir name +@kindex -rr_reloc_dir sets name of relocation directory +@cindex Relocation directory, set name, -rr_reloc_dir +Specify the name of the relocation directory in which deep directory subtrees +shall be placed if -compliance is set to "deep_paths_off". A deep directory +is one that has a chain of 8 parent directories (including root) above itself. +@* +The overall directory tree will appear originally deep when interpreted +as Rock Ridge tree. It will appear as re-arranged if only ECMA-119 +information is considered. +@* +The default relocation directory is the root directory. By giving a non-empty +name with -rr_reloc_dir, a directory in the root directory may get this role. +If that directory does not already exist at -commit time, then it will get +created and marked for Rock Ridge as relocation artefact. At least on +GNU/Linux it will not be displayed in mounted Rock Ridge images. +@* +The name must not contain a '/' character and must not be longer than +255 bytes. +@c man .TP @item -volid text @kindex -volid sets volume id @cindex Image, set volume id, -volid diff --git a/xorriso/xorriso_private.h b/xorriso/xorriso_private.h index ac97f829..8ecc9354 100644 --- a/xorriso/xorriso_private.h +++ b/xorriso/xorriso_private.h @@ -170,6 +170,8 @@ struct XorrisO { /* the global context of xorriso */ char scdbackup_tag_listname[SfileadrL]; int relax_compliance; /* opaque bitfield to be set by xorrisoburn */ + char rr_reloc_dir[256]; + int rr_reloc_flags; int untranslated_name_len; int do_follow_pattern; int do_follow_param; diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index ec2d93c9..8b79f0d4 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2012.03.10.145124" +#define Xorriso_timestamP "2012.03.10.150003"