From b5a33c3418761ce4d72b57a72ad0f14b17567a9f Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Mon, 13 Sep 2021 17:12:34 +0200 Subject: [PATCH] Bug fix: -not_leaf and -not_paths were not applied to -extract and alike --- xorriso/parse_exec.c | 25 ++++- xorriso/read_run.c | 64 +++++++++--- xorriso/xorriso.1 | 29 +++++- xorriso/xorriso.info | 203 +++++++++++++++++++----------------- xorriso/xorriso.texi | 29 +++++- xorriso/xorriso_timestamp.h | 2 +- 6 files changed, 227 insertions(+), 125 deletions(-) diff --git a/xorriso/parse_exec.c b/xorriso/parse_exec.c index 53625675..57a1589e 100644 --- a/xorriso/parse_exec.c +++ b/xorriso/parse_exec.c @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2020 Thomas Schmitt, + Copyright 2007-2021 Thomas Schmitt, Provided under GPL version 2 or later. @@ -3126,28 +3126,43 @@ int Xorriso_pipe_open(struct XorrisO *xorriso, char *purpose, char *cmd, /* @param flag bit0= path is a command parameter + bit1= prepend xorriso->wdx if path is relative + bit2= do not issue note about excluded parameter */ int Xorriso_path_is_excluded(struct XorrisO *xorriso, char *path, int flag) { int ret; + char *path_pt, *local_path_mem= NULL; if(!(xorriso->disk_excl_mode&1)) /* exclusion is off */ - return(0); + {ret= 0; goto ex;} if((flag&1) && !(xorriso->disk_excl_mode&2)) /* params are exempted */ - return(0); - ret= Exclusions_match(xorriso->disk_exclusions, path, + {ret= 0; goto ex;} + + path_pt= path; + if((flag & 2) && path[0] != '/' && path[0] != 0) { + Xorriso_alloc_meM(local_path_mem, char, + strlen(xorriso->wdx) + 1 + strlen(path) + 1); + strcpy(local_path_mem, xorriso->wdx); + strcat(local_path_mem, "/"); + strcat(local_path_mem, path); + path_pt= local_path_mem; + } + ret= Exclusions_match(xorriso->disk_exclusions, path_pt, !!(xorriso->disk_excl_mode&4)); if(ret<0) { sprintf(xorriso->info_text, "Error during disk file exclusion decision"); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0); } - if(ret>0 && (flag&1)) { + if(ret > 0 && (flag & 1) && !(flag & 4)) { sprintf(xorriso->info_text, "Disk path parameter excluded by %s : ", (ret==1 ? "-not_paths" : "-not_leaf")); Text_shellsafe(path, xorriso->info_text, 1); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0); } +ex:; + Xorriso_free_meM(local_path_mem); return(ret); } diff --git a/xorriso/read_run.c b/xorriso/read_run.c index a38f6afe..da3f9341 100644 --- a/xorriso/read_run.c +++ b/xorriso/read_run.c @@ -2,7 +2,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2020 Thomas Schmitt, + Copyright 2007-2021 Thomas Schmitt, Provided under GPL version 2 or later. @@ -1591,7 +1591,6 @@ ex:; /* @param flag bit0= recursion is active bit1= do not report restored files bit6= this is a copy action: do not fake times and ownership - bit8= only register non-directory nodes in xorriso->node_array bit7+8= 0= direct operation 1= create only directories, @@ -1731,9 +1730,14 @@ much_too_long:; {ret= 0; goto was_problem;} if(Xorriso_much_too_long(xorriso, len_ip + strlen(leaf_name)+1, 0)<=0) {ret= 0; goto was_problem;} - /* name is a pointer into img_path */ + /* name and disk_name are pointers into img_path and disk_path */ strcpy(name, leaf_name); strcpy(disk_name, leaf_name); + ret= Xorriso_path_is_excluded(xorriso, disk_path, 2); + if(ret < 0) + goto was_problem; + if(ret > 0) + continue; stbuf_src= srcpt; ret= Xorriso_fake_stbuf(xorriso, img_path, &stbuf, &node, 1); @@ -1811,6 +1815,8 @@ much_too_long:; } else { ret= Xorriso_restore_disk_object(xorriso, img_path, node, disk_path, (off_t) 0, (off_t) 0, hflag); + if(ret == 3) /* intentionally not restored */ + do_not_dive= 1; } if(ret<=0) goto was_problem; @@ -1923,11 +1929,18 @@ int Xorriso_restore(struct XorrisO *xorriso, goto ex; } - ret= Xorriso_path_is_excluded(xorriso, disk_path, !(flag&4)); - if(ret<0) - goto ex; - if(ret>0) + ret= Xorriso_path_is_excluded(xorriso, disk_path, 4 | 2 | !(flag & 4)); + if(ret < 0) + {ret= 0; goto ex;} + if(ret > 0) { + if(!(flag & 4)) { + strcpy(xorriso->info_text, + "Excluded from restoring by -not_path or -not_leaf :"); + Text_shellsafe(disk_path, xorriso->info_text, 1); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); + } {ret= 3*!!(flag&16); goto ex;} + } ret= Xorriso_get_volume(xorriso, &volume, 0); if(ret<=0) @@ -2126,7 +2139,11 @@ int Xorriso_restore_node_array(struct XorrisO *xorriso, int flag) img_path, disk_path, hflag); if(ret<=0) goto was_problem; - + + /* (Exclusion must already be handled when the node array gets filled, + because of no distinction between parameter and tree passenger here.) + */ + ret= Xorriso_handle_collision(xorriso, node, img_path, disk_path, disk_path, &stbuf_ret, 64); if(ret<=0 || ret==3) @@ -2213,9 +2230,16 @@ int Xorriso_paste_in(struct XorrisO *xorriso, char *disk_path, 2|4); if(ret<=0) goto ex; - ret= Xorriso_path_is_excluded(xorriso, disk_path, !(flag&1)); + ret= Xorriso_path_is_excluded(xorriso, disk_path, 4 | 2 | !(flag & 1)); + if(ret > 0 && !(flag & 1)) { + strcpy(xorriso->info_text, + "Excluded from restoring by -not_path or -not_leaf :"); + Text_shellsafe(disk_path, xorriso->info_text, 1); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); + } if(ret!=0) {ret= 0; goto ex;} + ret= stat(eff_dest, &stbuf); if(ret!=-1 && !S_ISREG(stbuf.st_mode)) { Xorriso_msgs_submit(xorriso, 0, eff_dest, 0, "ERRFILE", 0); @@ -2279,13 +2303,16 @@ int Xorriso_extract_cut(struct XorrisO *xorriso, disk_path, eff_disk_path, 2 | 4); if(ret<=0) goto ex; - Xorriso_pacifier_reset(xorriso, 0); - mem_lut= xorriso->last_update_time; - - ret= Xorriso_handle_collision(xorriso, node, img_path, eff_disk_path, - disk_path, &stbuf_ret, 0); - if(ret<=0 || ret==3) + ret= Xorriso_path_is_excluded(xorriso, eff_disk_path, 1 | 2 | 4); + if(ret < 0) + goto ex; + if(ret > 0) { + strcpy(xorriso->info_text, + "Excluded from restoring by -not_path or -not_leaf :"); + Text_shellsafe(eff_disk_path, xorriso->info_text, 1); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); {ret= 0; goto ex;} + } /* If it is a non-filtered stream from the ISO image and img_offset is a multiple of 2048 @@ -2299,6 +2326,13 @@ int Xorriso_extract_cut(struct XorrisO *xorriso, Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); {ret= 0; goto ex;} } + ret= Xorriso_handle_collision(xorriso, node, img_path, eff_disk_path, + disk_path, &stbuf_ret, 0); + if(ret<=0 || ret==3) + {ret= 0; goto ex;} + + Xorriso_pacifier_reset(xorriso, 0); + mem_lut= xorriso->last_update_time; read_raw= 0; if((img_offset % 2048) == 0) { ret= Xorriso_is_plain_image_file(xorriso, node, "", 0); diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index 4d58fc6d..dcc49540 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.5.5, Sep 12, 2021" +.TH XORRISO 1 "Version 1.5.5, Sep 13, 2021" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -1494,10 +1494,13 @@ the target filesystem of an \-extract must be able to take the file size. \fB\-not_mgt\fR code[:code[...]] Control the behavior of the exclusion lists. .br -Exclusion processing happens before disk_paths get mapped to the ISO image -and before disk files get compared with image files. -The absolute disk path of the source is matched against the \-not_paths list. -The leafname of the disk path is matched against the patterns in the \-not_leaf +Exclusion processing happens before disk_paths get mapped to the ISO image, +before disk files get compared with image files, and before image files get +extracted to disk files. +.br +The absolute disk paths involved in such an action are matched against the +\-not_paths list. +The leafnames of disk paths are matched against the patterns in the \-not_leaf list. If a match is detected then the disk path will not be regarded as an existing file and not be added to the ISO image. .br @@ -1538,6 +1541,13 @@ path is relative, then the current \-cdx is prepended to form an absolute path. Pattern matching, if enabled, happens at definition time and not when exclusion checks are made. .br +Keep in mind that there may be alternative paths to the same disk file. The +exclusion tests are done literally, so that they do not keep files from getting +into the ISO filesystem by other paths. Accordingly an exclusion does not +prevent a disk file from being overwritten by file extraction via an +alternative not excluded path. So the exlusions need to be coordinated with +the actual disk_path parameters given with commands. +.br (Do not forget to end the list of disk_paths by "\-\-") .TP \fB\-not_leaf\fR pattern @@ -4983,6 +4993,15 @@ But its alter ego osirrox is able to extract file objects from ISO images and to create, overwrite, or delete file objects on disk. .br Disk file exclusions by \-not_mgt, \-not_leaf, \-not_paths apply. +The exclusion tests are made with the paths and names for the disk files. +If exclusion of paths or names in the ISO image is desired, then use image +manipulation commands like \-rm or \-find ... \-exec rm before extraction, +and end the program by \-rollback_end . +.br +Excluded disk_path parameters of extraction commands cause SORRY events. +Implicitely given paths in trees under disk_path parameters are excluded +silently. +.br If disk file objects already exist then the settings of \-overwrite and \-reassure apply. But \-overwrite "on" only triggers the behavior of \-overwrite "nondir". I.e. directories cannot be deleted. diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index 03658472..9abfe0eb 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -1332,12 +1332,13 @@ File: xorriso.info, Node: SetInsert, Next: Manip, Prev: Insert, Up: Commands -not_mgt code[:code[...]] Control the behavior of the exclusion lists. Exclusion processing happens before disk_paths get mapped to the - ISO image and before disk files get compared with image files. The - absolute disk path of the source is matched against the -not_paths - list. The leafname of the disk path is matched against the - patterns in the -not_leaf list. If a match is detected then the - disk path will not be regarded as an existing file and not be added - to the ISO image. + ISO image, before disk files get compared with image files, and + before image files get extracted to disk files. + The absolute disk paths involved in such an action are matched + against the -not_paths list. The leafnames of disk paths are + matched against the patterns in the -not_leaf list. If a match is + detected then the disk path will not be regarded as an existing + file and not be added to the ISO image. Several codes are defined. The _on/_off settings persist until they are revoked by their_off/_on counterparts. "erase" empties the lists which were accumulated by -not_paths and @@ -1365,6 +1366,13 @@ File: xorriso.info, Node: SetInsert, Next: Manip, Prev: Insert, Up: Commands If a given path is relative, then the current -cdx is prepended to form an absolute path. Pattern matching, if enabled, happens at definition time and not when exclusion checks are made. + Keep in mind that there may be alternative paths to the same disk + file. The exclusion tests are done literally, so that they do not + keep files from getting into the ISO filesystem by other paths. + Accordingly an exclusion does not prevent a disk file from being + overwritten by file extraction via an alternative not excluded + path. So the exlusions need to be coordinated with the actual + disk_path parameters given with commands. (Do not forget to end the list of disk_paths by "--") -not_leaf pattern Add a single shell parser style pattern to the list of exclusions @@ -4201,10 +4209,17 @@ Normally 'xorriso' only writes to disk files which were given as stdio: pseudo-drives or as log files. But its alter ego osirrox is able to extract file objects from ISO images and to create, overwrite, or delete file objects on disk. -Disk file exclusions by -not_mgt, -not_leaf, -not_paths apply. If disk -file objects already exist then the settings of -overwrite and -reassure -apply. But -overwrite "on" only triggers the behavior of -overwrite -"nondir". I.e. directories cannot be deleted. +Disk file exclusions by -not_mgt, -not_leaf, -not_paths apply. The +exclusion tests are made with the paths and names for the disk files. +If exclusion of paths or names in the ISO image is desired, then use +image manipulation commands like -rm or -find ... -exec rm before +extraction, and end the program by -rollback_end . +Excluded disk_path parameters of extraction commands cause SORRY events. +Implicitely given paths in trees under disk_path parameters are excluded +silently. +If disk file objects already exist then the settings of -overwrite and +-reassure apply. But -overwrite "on" only triggers the behavior of +-overwrite "nondir". I.e. directories cannot be deleted. Access permissions of files in the ISO image do not restrict restoring. The directory permissions on disk have to allow rwx. @@ -5599,14 +5614,14 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -compare_l reports ISO/disk differences: Navigate. (line 147) * -compare_r reports ISO/disk differences: Navigate. (line 143) * -compliance controls standard compliance: SetWrite. (line 62) -* -concat copies ISO file content: Restore. (line 139) +* -concat copies ISO file content: Restore. (line 146) * -copyright_file sets copyright file name: SetWrite. (line 245) -* -cpax copies files to disk: Restore. (line 121) +* -cpax copies files to disk: Restore. (line 128) * -cpr inserts like with cp -r: Insert. (line 164) -* -cpx copies files to disk: Restore. (line 110) +* -cpx copies files to disk: Restore. (line 117) * -cp_clone copies ISO directory tree: Insert. (line 196) -* -cp_rx copies file trees to disk: Restore. (line 124) -* -cp_rx copies file trees to disk <1>: Restore. (line 132) +* -cp_rx copies file trees to disk: Restore. (line 131) +* -cp_rx copies file trees to disk <1>: Restore. (line 139) * -cut_out inserts piece of data file: Insert. (line 139) * -data_cache_size adjusts read cache size: Loading. (line 362) * -dev acquires one drive for input and output: AqDrive. (line 12) @@ -5633,17 +5648,17 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -error_behavior controls error workarounds: Exception. (line 92) * -external_filter registers data filter: Filter. (line 20) * -external_filter unregisters data filter: Filter. (line 47) -* -extract copies file tree to disk: Restore. (line 83) +* -extract copies file tree to disk: Restore. (line 90) * -extract_boot_images copies boot equipment to disk: Restore. - (line 167) -* -extract_cut copies file piece to disk: Restore. (line 101) -* -extract_l copies files to disk: Restore. (line 97) -* -extract_single copies file to disk: Restore. (line 94) + (line 174) +* -extract_cut copies file piece to disk: Restore. (line 108) +* -extract_l copies files to disk: Restore. (line 104) +* -extract_single copies file to disk: Restore. (line 101) * -file_name_limit curbs length of file names: Loading. (line 276) * -file_size_limit limits data file size: SetInsert. (line 7) * -find traverses and alters ISO tree: CmdFind. (line 7) * -findx traverses disk tree: Navigate. (line 91) -* -follow softlinks and mount points: SetInsert. (line 69) +* -follow softlinks and mount points: SetInsert. (line 77) * -format formats media: Writing. (line 87) * -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 215) * -fs sets size of fifo: SetWrite. (line 479) @@ -5693,28 +5708,28 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -md5 controls handling of MD5 sums: Loading. (line 184) * -mkdir creates ISO directory: Insert. (line 177) * -modesty_on_drive keep drive buffer hungry: SetWrite. (line 419) -* -mount issues mount command for ISO session: Restore. (line 195) +* -mount issues mount command for ISO session: Restore. (line 202) * -mount_cmd composes mount command line: Inquiry. (line 49) * -mount_cmd controls mount command: Inquiry. (line 65) * -msg_op perform operations on program messages: Frontend. (line 27) * -mv renames files in ISO image: Manip. (line 37) * -mv renames single file in ISO image: Manip. (line 31) * -named_pipe_loop enters EOF resistant dialog: Frontend. (line 119) -* -not_leaf sets exclusion pattern: SetInsert. (line 59) -* -not_list sets exclusions from disk file: SetInsert. (line 63) +* -not_leaf sets exclusion pattern: SetInsert. (line 67) +* -not_list sets exclusions from disk file: SetInsert. (line 71) * -not_mgt controls file exclusion: SetInsert. (line 22) -* -not_paths sets absolute exclusion paths: SetInsert. (line 53) +* -not_paths sets absolute exclusion paths: SetInsert. (line 54) * -no_rc disables startup files: Scripting. (line 7) * -options_from_file reads commands from file: Scripting. (line 12) -* -osirrox enables ISO-to-disk copying: Restore. (line 18) +* -osirrox enables ISO-to-disk copying: Restore. (line 25) * -outdev acquires a drive for output: AqDrive. (line 29) * -out_charset sets output character set: SetWrite. (line 285) -* -overwrite enables overwriting in ISO: SetInsert. (line 131) +* -overwrite enables overwriting in ISO: SetInsert. (line 139) * -pacifier controls pacifier text form: Emulation. (line 166) * -padding sets amount or mode of image padding: SetWrite. (line 507) * -page set terminal geometry: DialogCtl. (line 18) -* -paste_in copies file into disk file: Restore. (line 135) -* -pathspecs sets meaning of = with -add: SetInsert. (line 115) +* -paste_in copies file into disk file: Restore. (line 142) +* -pathspecs sets meaning of = with -add: SetInsert. (line 123) * -path_list inserts paths from disk file: Insert. (line 81) * -pkt_output consolidates text output: Frontend. (line 7) * -preparer_id sets preparer id: SetWrite. (line 261) @@ -5729,7 +5744,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -pvd_info shows image id strings: Inquiry. (line 108) * -pwd tells working directory in ISO: Navigate. (line 19) * -pwdx tells working directory on disk: Navigate. (line 21) -* -quoted_not_list sets exclusions: SetInsert. (line 66) +* -quoted_not_list sets exclusions: SetInsert. (line 74) * -quoted_path_list inserts paths from disk file: Insert. (line 85) * -read_fs filesystem type for image loading: Loading. (line 96) * -read_mkisofsrc searches and reads .mkisofsrc file: Emulation. @@ -5770,7 +5785,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top (line 66) * -sleep waits for a given time span: Scripting. (line 113) * -speed set write speed: SetWrite. (line 371) -* -split_size enables large file splitting: SetInsert. (line 145) +* -split_size enables large file splitting: SetInsert. (line 153) * -status shows current settings: Scripting. (line 44) * -status_history_max curbs -status history: Scripting. (line 52) * -stdio_sync controls stdio buffer: SetWrite. (line 469) @@ -5886,7 +5901,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Emulation, pacifier form, -pacifier: Emulation. (line 166) * Examples: Examples. (line 6) * extattr, _definition: Extras. (line 66) -* File content, copy, -concat: Restore. (line 139) +* File content, copy, -concat: Restore. (line 146) * File names, curb length, -file_name_limit: Loading. (line 276) * File names, if Joliet is loaded: Loading. (line 242) * File names, if neither Rock Ridge nor Joliet: Loading. (line 229) @@ -5936,21 +5951,21 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Image, show MBR, GPT, and alike, -pvd_info: Inquiry. (line 138) * Image, _definition: Model. (line 9) * Input Character Set, _definition: Charset. (line 25) -* Insert, enable overwriting, -overwrite: SetInsert. (line 131) -* Insert, file exclusion absolute, -not_paths: SetInsert. (line 53) -* Insert, file exclusion from file, -not_list: SetInsert. (line 63) -* Insert, file exclusion pattern, -not_leaf: SetInsert. (line 59) +* Insert, enable overwriting, -overwrite: SetInsert. (line 139) +* Insert, file exclusion absolute, -not_paths: SetInsert. (line 54) +* Insert, file exclusion from file, -not_list: SetInsert. (line 71) +* Insert, file exclusion pattern, -not_leaf: SetInsert. (line 67) * Insert, file exclusion, -not_mgt: SetInsert. (line 22) -* Insert, file exclusion, -quoted_not_list: SetInsert. (line 66) +* Insert, file exclusion, -quoted_not_list: SetInsert. (line 74) * Insert, if different, -update: Insert. (line 100) * Insert, if different, -update_l: Insert. (line 120) * Insert, if different, -update_li: Insert. (line 124) * Insert, if different, -update_lxi: Insert. (line 128) * Insert, if different, -update_r: Insert. (line 110) -* Insert, large file splitting, -split_size: SetInsert. (line 145) +* Insert, large file splitting, -split_size: SetInsert. (line 153) * Insert, limit data file size, -file_size_limit: SetInsert. (line 7) -* Insert, links or mount points, -follow: SetInsert. (line 69) -* Insert, meaning of = with -add, -pathspecs: SetInsert. (line 115) +* Insert, links or mount points, -follow: SetInsert. (line 77) +* Insert, meaning of = with -add, -pathspecs: SetInsert. (line 123) * Insert, non-dashed arguments, -add_plainly: Insert. (line 68) * Insert, path, -map: Insert. (line 89) * Insert, path, -map_single: Insert. (line 93) @@ -6008,7 +6023,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Ownership, in ISO image, -chown_r: Manip. (line 47) * Partition offset, _definition: Bootable. (line 315) * Partition table, _definition: Bootable. (line 265) -* Pathspec, _definition: SetInsert. (line 117) +* Pathspec, _definition: SetInsert. (line 125) * Pattern expansion, for disk paths, -disk_pattern: Insert. (line 34) * Pattern expansion, for ISO paths, -iso_rr_pattern: Manip. (line 10) * Pattern expansion, _definition: Processing. (line 29) @@ -6053,23 +6068,23 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Rename, in ISO image, -move: Manip. (line 31) * Rename, in ISO image, -mv: Manip. (line 37) * Restore, copy boot equipment to disk, -extract_boot_images: Restore. - (line 167) -* Restore, copy file into disk file, -paste_in: Restore. (line 135) -* Restore, copy file piece to disk, -extract_cut: Restore. (line 101) -* Restore, copy file to disk, -extract_single: Restore. (line 94) -* Restore, copy file tree to disk, -extract: Restore. (line 83) -* Restore, copy file trees to disk, -cp_rx: Restore. (line 124) -* Restore, copy file trees to disk, -cp_rx <1>: Restore. (line 132) -* Restore, copy files to disk, -cpax: Restore. (line 121) -* Restore, copy files to disk, -cpx: Restore. (line 110) -* Restore, copy files to disk, -extract_l: Restore. (line 97) -* Restore, enable ISO-to-disk, -osirrox: Restore. (line 18) + (line 174) +* Restore, copy file into disk file, -paste_in: Restore. (line 142) +* Restore, copy file piece to disk, -extract_cut: Restore. (line 108) +* Restore, copy file to disk, -extract_single: Restore. (line 101) +* Restore, copy file tree to disk, -extract: Restore. (line 90) +* Restore, copy file trees to disk, -cp_rx: Restore. (line 131) +* Restore, copy file trees to disk, -cp_rx <1>: Restore. (line 139) +* Restore, copy files to disk, -cpax: Restore. (line 128) +* Restore, copy files to disk, -cpx: Restore. (line 117) +* Restore, copy files to disk, -extract_l: Restore. (line 104) +* Restore, enable ISO-to-disk, -osirrox: Restore. (line 25) * Result layout, more shell-like, -sh_style_result: Scripting. (line 61) * Rock Ridge, _definition: Extras. (line 6) * Session, altered start address, -displacement: Loading. (line 78) * Session, info string, -session_string: Inquiry. (line 74) -* Session, issue mount command, -mount: Restore. (line 195) +* Session, issue mount command, -mount: Restore. (line 202) * Session, log when written, -session_log: Scripting. (line 134) * Session, mount command line, -mount_cmd: Inquiry. (line 49) * Session, mount parameters, -mount_opts: Inquiry. (line 65) @@ -6140,46 +6155,46 @@ Node: AqDrive28961 Node: Loading36118 Node: Insert57957 Node: SetInsert69460 -Node: Manip78892 -Node: CmdFind88992 -Node: Filter107921 -Node: Writing112543 -Node: SetWrite124798 -Node: Bootable154649 -Node: Jigdo182530 -Node: Charset187533 -Node: Exception190862 -Node: DialogCtl196991 -Node: Inquiry199593 -Node: Navigate208475 -Node: Verify217182 -Node: Restore228331 -Node: Emulation240030 -Node: Scripting250486 -Node: Frontend258269 -Node: Examples267895 -Node: ExDevices269073 -Node: ExCreate269734 -Node: ExDialog271034 -Node: ExGrowing272305 -Node: ExModifying273114 -Node: ExBootable273624 -Node: ExCharset274179 -Node: ExPseudo275075 -Node: ExCdrecord276002 -Node: ExMkisofs276322 -Node: ExGrowisofs278219 -Node: ExException279372 -Node: ExTime279830 -Node: ExIncBackup280288 -Node: ExRestore284314 -Node: ExRecovery285260 -Node: Files285832 -Node: Environ287166 -Node: Seealso287914 -Node: Bugreport288631 -Node: Legal289222 -Node: CommandIdx290234 -Node: ConceptIdx308059 +Node: Manip79424 +Node: CmdFind89524 +Node: Filter108453 +Node: Writing113075 +Node: SetWrite125330 +Node: Bootable155181 +Node: Jigdo183062 +Node: Charset188065 +Node: Exception191394 +Node: DialogCtl197523 +Node: Inquiry200125 +Node: Navigate209007 +Node: Verify217714 +Node: Restore228863 +Node: Emulation240979 +Node: Scripting251435 +Node: Frontend259218 +Node: Examples268844 +Node: ExDevices270022 +Node: ExCreate270683 +Node: ExDialog271983 +Node: ExGrowing273254 +Node: ExModifying274063 +Node: ExBootable274573 +Node: ExCharset275128 +Node: ExPseudo276024 +Node: ExCdrecord276951 +Node: ExMkisofs277271 +Node: ExGrowisofs279168 +Node: ExException280321 +Node: ExTime280779 +Node: ExIncBackup281237 +Node: ExRestore285263 +Node: ExRecovery286209 +Node: Files286781 +Node: Environ288115 +Node: Seealso288863 +Node: Bugreport289580 +Node: Legal290171 +Node: CommandIdx291183 +Node: ConceptIdx309008  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index 95b54339..21d51674 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.5.5, Sep 12, 2021" +@c man .TH XORRISO 1 "Version 1.5.5, Sep 13, 2021" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -1821,10 +1821,13 @@ the target filesystem of an -extract must be able to take the file size. @cindex Insert, file exclusion, -not_mgt Control the behavior of the exclusion lists. @* -Exclusion processing happens before disk_paths get mapped to the ISO image -and before disk files get compared with image files. -The absolute disk path of the source is matched against the -not_paths list. -The leafname of the disk path is matched against the patterns in the -not_leaf +Exclusion processing happens before disk_paths get mapped to the ISO image, +before disk files get compared with image files, and before image files get +extracted to disk files. +@* +The absolute disk paths involved in such an action are matched against the +-not_paths list. +The leafnames of disk paths are matched against the patterns in the -not_leaf list. If a match is detected then the disk path will not be regarded as an existing file and not be added to the ISO image. @* @@ -1867,6 +1870,13 @@ path is relative, then the current -cdx is prepended to form an absolute path. Pattern matching, if enabled, happens at definition time and not when exclusion checks are made. @* +Keep in mind that there may be alternative paths to the same disk file. The +exclusion tests are done literally, so that they do not keep files from getting +into the ISO filesystem by other paths. Accordingly an exclusion does not +prevent a disk file from being overwritten by file extraction via an +alternative not excluded path. So the exlusions need to be coordinated with +the actual disk_path parameters given with commands. +@* (Do not forget to end the list of disk_paths by "@minus{}@minus{}") @c man .TP @item -not_leaf pattern @@ -5719,6 +5729,15 @@ But its alter ego osirrox is able to extract file objects from ISO images and to create, overwrite, or delete file objects on disk. @* Disk file exclusions by -not_mgt, -not_leaf, -not_paths apply. +The exclusion tests are made with the paths and names for the disk files. +If exclusion of paths or names in the ISO image is desired, then use image +manipulation commands like -rm or -find ... -exec rm before extraction, +and end the program by -rollback_end . +@* +Excluded disk_path parameters of extraction commands cause SORRY events. +Implicitely given paths in trees under disk_path parameters are excluded +silently. +@* If disk file objects already exist then the settings of -overwrite and -reassure apply. But -overwrite "on" only triggers the behavior of -overwrite "nondir". I.e. directories cannot be deleted. diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 83e2c5f7..26cdd26f 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2021.09.12.093333" +#define Xorriso_timestamP "2021.09.13.151219"