From 7b12dd0dda3be7a0107900e6e6a2e6c3a309d604 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Mon, 5 Dec 2016 14:35:04 +0100 Subject: [PATCH] New command -update_lxi --- xorriso/iso_tree.c | 9 ++- xorriso/match.c | 11 ++-- xorriso/misc_funct.c | 23 +++++++ xorriso/misc_funct.h | 6 ++ xorriso/opts_d_h.c | 3 + xorriso/opts_i_o.c | 126 +++++++++++++++++++++++++++++------- xorriso/parse_exec.c | 31 +++++++-- xorriso/xorriso.1 | 13 +++- xorriso/xorriso.h | 1 + xorriso/xorriso.info | 121 ++++++++++++++++++---------------- xorriso/xorriso.texi | 15 ++++- xorriso/xorriso_timestamp.h | 2 +- 12 files changed, 267 insertions(+), 94 deletions(-) diff --git a/xorriso/iso_tree.c b/xorriso/iso_tree.c index 166cfb15..2aafca5c 100644 --- a/xorriso/iso_tree.c +++ b/xorriso/iso_tree.c @@ -2024,6 +2024,7 @@ ex:; /* @param flag bit0= a match count !=1 is a FAILURE event bit1= with bit0 tolerate 0 matches if pattern is a constant bit2= do not issue debug messages about temporay memory needs + bit3= do not add unresolved pattern to filev */ int Xorriso_expand_pattern(struct XorrisO *xorriso, int num_patterns, char **patterns, int extra_filec, @@ -2092,7 +2093,8 @@ int Xorriso_expand_pattern(struct XorrisO *xorriso, mem, &dive_count, 1 | abs_adr); if(ret<=0) goto ex; - if(was_count==count && strcmp(patterns[i],"*")!=0 && (flag&3)!=1) { + if(was_count==count && strcmp(patterns[i],"*")!=0 && (flag&3)!=1 && + !(flag & 8)) { count++; Xorriso_eval_nonmatch(xorriso, patterns[i], &nonconst_mismatches, mem, 0); } @@ -2105,7 +2107,7 @@ int Xorriso_expand_pattern(struct XorrisO *xorriso, count+= extra_filec; (*mem)+= extra_filec * sizeof(char *); if(count<=0) - {ret= 0; goto ex;} + {ret= !!(flag & 8); goto ex;} ret= Xorriso_alloc_pattern_mem(xorriso, *mem, count, filev, !!(flag & 4)); if(ret<=0) goto ex; @@ -2122,7 +2124,8 @@ int Xorriso_expand_pattern(struct XorrisO *xorriso, mem, &dive_count, abs_adr); if(ret<=0) goto ex; - if(was_filec == *filec && strcmp(patterns[i],"*")!=0) { + if(was_filec == *filec && strcmp(patterns[i],"*")!=0 && (flag&3) != 1 && + !(flag & 8)) { (*filev)[*filec]= strdup(patterns[i]); if((*filev)[*filec]==NULL) { (*mem)= strlen(patterns[i])+1; diff --git a/xorriso/match.c b/xorriso/match.c index 91de1947..c52cd21d 100644 --- a/xorriso/match.c +++ b/xorriso/match.c @@ -631,6 +631,7 @@ int Xorriso_alloc_pattern_mem(struct XorrisO *xorriso, off_t mem, /* @param flag bit0= a match count !=1 is a FAILURE event bit1= with bit0 tolerate 0 matches if pattern is a constant + bit3= do not add unresolved pattern to filev */ int Xorriso_expand_disk_pattern(struct XorrisO *xorriso, int num_patterns, char **patterns, int extra_filec, @@ -679,7 +680,8 @@ int Xorriso_expand_disk_pattern(struct XorrisO *xorriso, mem, &dive_count, 1 | abs_adr); if(ret<=0) goto ex; - if(was_count==count && strcmp(patterns[i],"*")!=0 && (flag&3)!=1) { + if(was_count==count && strcmp(patterns[i],"*")!=0 && (flag&3)!=1 && + !(flag & 8)) { count++; ret= Xorriso_eval_nonmatch(xorriso, patterns[i], &nonconst_mismatches, mem, 0); @@ -697,7 +699,7 @@ int Xorriso_expand_disk_pattern(struct XorrisO *xorriso, (*mem)+= extra_filec * sizeof(char *); if(count<=0) - {ret= 0; goto ex;} + {ret= !(flag & 8); goto ex;} ret= Xorriso_alloc_pattern_mem(xorriso, *mem, count, filev, 0); if(ret<=0) @@ -709,7 +711,7 @@ int Xorriso_expand_disk_pattern(struct XorrisO *xorriso, ret= Xorriso_prepare_expansion_pattern(xorriso, patterns[i], 4); if(ret<=0) goto ex; - if(ret == 2) + if(ret==2) abs_adr= 4; if(patterns[i][0]=='/' || abs_adr) { @@ -727,7 +729,8 @@ int Xorriso_expand_disk_pattern(struct XorrisO *xorriso, if(ret<=0) goto ex; - if(was_filec == *filec && strcmp(patterns[i],"*")!=0) { + if(was_filec == *filec && strcmp(patterns[i],"*")!=0 && (flag & 3) != 1 && + !(flag & 8)) { (*filev)[*filec]= strdup(patterns[i]); if((*filev)[*filec]==NULL) { (*mem)= strlen(patterns[i])+1; diff --git a/xorriso/misc_funct.c b/xorriso/misc_funct.c index eb0a14a0..cc579390 100644 --- a/xorriso/misc_funct.c +++ b/xorriso/misc_funct.c @@ -1311,3 +1311,26 @@ int Xorriso__to_upper(char *in, char *out, int out_size, int flag) return(in[i] == 0); } + +/* @param flag bit0= prepend target_prefix even if source_prefix does not get + removed +*/ +int Xorriso__exchange_prefix(char *source_prefix, char *target_prefix, + char *eff_source, char *eff_target, int flag) +{ + char *source_pt; + + strcpy(eff_target, target_prefix); + source_pt= eff_source; + if(source_prefix[0]) { + if(strncmp(source_prefix, eff_source, strlen(source_prefix)) != 0) { + if(!(flag & 1)) + return(0); + } else { + source_pt+= strlen(source_prefix); + } + } + strcat(eff_target, source_pt); + return(1); +} + diff --git a/xorriso/misc_funct.h b/xorriso/misc_funct.h index 7e860c1a..47183fbe 100644 --- a/xorriso/misc_funct.h +++ b/xorriso/misc_funct.h @@ -95,5 +95,11 @@ char *Xorriso__hide_mode_text(int hide_mode, int flag); */ int Xorriso__to_upper(char *in, char *out, int out_size, int flag); +/* @param flag bit0= prepend target_prefix even if source_prefix does not get + removed +*/ +int Xorriso__exchange_prefix(char *source_prefix, char *target_prefix, + char *eff_source, char *eff_target, int flag); + #endif /* ! Xorriso_pvt_misc_includeD */ diff --git a/xorriso/opts_d_h.c b/xorriso/opts_d_h.c index c7855d77..970efc45 100644 --- a/xorriso/opts_d_h.c +++ b/xorriso/opts_d_h.c @@ -1983,6 +1983,9 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " Like -update but affecting all files below directories.", " -update_l disk_prefix iso_rr_prefix disk_path [***]", " Performs -update_r with each disk_path.", +" -update_lxi disk_prefix iso_rr_prefix disk_or_iso_rr_path [***]", +" Performs -update_r with each disk_path or corresponding", +" iso_rr_path after exchange of disk_prefix by iso_rr_prefix.", " -cut_out disk_path byte_offset byte_count iso_rr_path", " Map a byte interval of a regular disk file into a regular", " file in the ISO image.", diff --git a/xorriso/opts_i_o.c b/xorriso/opts_i_o.c index 1b776cf5..dfa17de3 100644 --- a/xorriso/opts_i_o.c +++ b/xorriso/opts_i_o.c @@ -553,22 +553,25 @@ ex:; } -/* Options -map_l , -compare_l , -update_l , -extract_l */ +/* Command -map_l , -compare_l , -update_l , -extract_l , -update_lxi */ /* @param flag bit4= do not establish and dispose xorriso->di_array for update_l bit8-11= mode 0= -map_l 1= -compare_l 2= -update_l 3= -extract_l + 4= -update_lxi */ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv, int *idx, int flag) { - int ret, end_idx, optc= 0, was_failure= 1, i, fret, mode, problem_count; - int ns_flag= 2|4, nt_flag= 2, opt_args_flag= 2; + int ret, end_idx, optc= 0, was_failure= 1, i, j, fret, mode, problem_count; + int ns_flag= 2|4, nt_flag= 2, opt_args_flag= 2, arg2c= 0, opt2c= 0; + int new_opt2c; char *source_prefix= NULL, *target_prefix= NULL, *cmd, **optv= NULL; - char *eff_source= NULL, *eff_target= NULL, *source_pt, *s_wd, *t_wd; - char **eff_src_array= NULL, **eff_tgt_array= NULL; + char *eff_source= NULL, *eff_target= NULL, *s_wd, *t_wd; + char **eff_src_array= NULL, **eff_tgt_array= NULL, **opt2v= NULL; + char **arg2v= NULL; cmd= "-map_l"; s_wd= xorriso->wdx; @@ -587,6 +590,8 @@ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv, nt_flag= 2|4; t_wd= xorriso->wdx; opt_args_flag= 0; + } else if(mode == 4) { + cmd= "-update_lxi"; } end_idx= Xorriso_end_idx(xorriso, argc, argv, *idx, 1|2); @@ -614,7 +619,77 @@ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv, &optc, &optv, opt_args_flag); if(ret<=0) goto ex; - + if(mode == 4) { + /* Convert pattern from disk to iso_rr */ + arg2c= end_idx - *idx - 2; + Xorriso_alloc_meM(arg2v, char *, arg2c); + for(i = 0; i < arg2c; i++) + arg2v[i]= NULL; + arg2c= 0; + for(i = (*idx) + 2; i < end_idx; i++) { + ret= Xorriso_normalize_img_path(xorriso, s_wd, argv[i], + eff_source, ns_flag); + if(ret<=0) + goto ex; + ret= Xorriso__exchange_prefix(source_prefix, target_prefix, + eff_source, eff_target, 0); + if(ret <= 0) + continue; + Xorriso_alloc_meM(arg2v[arg2c], char, strlen(eff_target) + 1); + strcpy(arg2v[arg2c], eff_target); + arg2c++; + } + /* Expand wildcards in iso_rr, do not include unmatched patterns */ + ret= Xorriso_opt_args(xorriso, cmd, arg2c, arg2v, 0, &i, + &opt2c, &opt2v, (1 << 10) | (1 << 7)); + if(ret<=0) + goto ex; + /* Convert from iso_rr path to disk path */ + new_opt2c= 0; + for(i = 0; i < opt2c; i++) { + ret= Xorriso__exchange_prefix(target_prefix, source_prefix, + opt2v[i], eff_source, 0); + free(opt2v[i]); + opt2v[i]= NULL; + if(ret <= 0) + continue; + Xorriso_alloc_meM(opt2v[new_opt2c], char, strlen(eff_source) + 1); + strcpy(opt2v[new_opt2c], eff_source); + new_opt2c++; + } + opt2c= new_opt2c; + /* Merge both results */ + if(opt2c > 0) { + Sfile_destroy_argv(&arg2c, &arg2v, 0); + Xorriso_alloc_meM(arg2v, char *, optc + opt2c); + for(i = 0; i < optc + opt2c; i++) + arg2v[i]= NULL; + arg2c= 0; + for(i= 0; i < optc; i++) { + ret= Xorriso_normalize_img_path(xorriso, s_wd, optv[i], + eff_source, ns_flag); + if(ret<=0) + goto ex; + Xorriso_alloc_meM(arg2v[arg2c], char, strlen(eff_source) + 1); + strcpy(arg2v[arg2c], eff_source); + arg2c++; + } + for(i= 0; i < opt2c; i++) { + for(j= 0; j < optc; j++) + if(strcmp(opt2v[i], arg2v[j]) == 0) + break; + if(j < optc) + continue; + arg2v[arg2c++]= opt2v[i]; + opt2v[i]= NULL; + } + Sfile_destroy_argv(&optc, &optv, 0); + optv= arg2v; + arg2v= NULL; + optc= arg2c; + arg2c= 0; + } + } if(mode == 3 && (xorriso->do_restore_sort_lba || !(xorriso->ino_behavior & 4))) { @@ -627,8 +702,9 @@ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv, for(i= 0; i < optc; i++) eff_src_array[i]= eff_tgt_array[i]= NULL; } - if(mode == 2 && !((xorriso->ino_behavior & 2) || (flag & 16) || - xorriso->di_array != NULL)) { + if((mode == 2 || mode == 4) && + !((xorriso->ino_behavior & 2) || (flag & 16) || + xorriso->di_array != NULL)) { /* Create all-image node array sorted by isofs.di */ ret= Xorriso_make_di_array(xorriso, 0); if(ret <= 0) @@ -640,26 +716,23 @@ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv, eff_source, ns_flag); if(ret<=0) goto ex; - strcpy(eff_target, target_prefix); - source_pt= eff_source; - if(source_prefix[0]) { - if(strncmp(source_prefix, eff_source, strlen(source_prefix))!=0) { - sprintf(xorriso->info_text, "%s: disk_path ", cmd); - Text_shellsafe(eff_source, xorriso->info_text, 1); - strcat(xorriso->info_text, " does not begin with disk_prefix "); - Text_shellsafe(source_prefix, xorriso->info_text, 1); - Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 1); - ret= 0; goto ex; - } - source_pt+= strlen(source_prefix); + ret= Xorriso__exchange_prefix(source_prefix, target_prefix, + eff_source, eff_target, 0); + if(ret == 0) { + sprintf(xorriso->info_text, "%s: disk_path ", cmd); + Text_shellsafe(eff_source, xorriso->info_text, 1); + strcat(xorriso->info_text, " does not begin with disk_prefix "); + Text_shellsafe(source_prefix, xorriso->info_text, 1); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 1); } - strcat(eff_target, source_pt); + if(ret <= 0) + goto ex; if(mode==0) ret= Xorriso_option_map(xorriso, eff_source, eff_target, 2); else if(mode==1) ret= Xorriso_option_compare(xorriso, eff_source, eff_target, 2|8); - else if(mode==2) + else if(mode == 2 || mode == 4) ret= Xorriso_option_update(xorriso, eff_source, eff_target, 2 | 8 | 16); else if(mode==3) { if(eff_src_array != NULL) { @@ -701,7 +774,7 @@ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv, if(mode==0) Xorriso_pacifier_callback(xorriso, "files added", xorriso->pacifier_count, xorriso->pacifier_total, "", 1); - else if(mode==1 || mode==2) + else if(mode==1 || mode==2 || mode == 4) Xorriso_pacifier_callback(xorriso, "content bytes read", xorriso->pacifier_count, 0, "", 1 | 8 | 32); else if(mode==3) @@ -719,6 +792,13 @@ ex:; Xorriso_free_meM(eff_target); (*idx)= end_idx; Xorriso_opt_args(xorriso, cmd, argc, argv, *idx, &end_idx, &optc, &optv, 256); + Xorriso_opt_args(xorriso, cmd, argc, argv, *idx, &end_idx, &opt2c, &opt2v, + 256); + if(arg2c > 0) + Sfile_destroy_argv(&arg2c, &arg2v, 0); + else if(arg2v != NULL) + Xorriso_free_meM(arg2v); + if(ret<=0) return(ret); return(!was_failure); diff --git a/xorriso/parse_exec.c b/xorriso/parse_exec.c index 71ba7a35..438b0e14 100644 --- a/xorriso/parse_exec.c +++ b/xorriso/parse_exec.c @@ -82,6 +82,7 @@ int Xorriso_end_idx(struct XorrisO *xorriso, bit7= silently tolerate empty argument list bit8= free the eventually allocated sub_vector bit9= always expand wildcards + bit10= do not add unresolved pattern to optv */ int Xorriso_opt_args(struct XorrisO *xorriso, char *cmd, int argc, char **argv, int idx, @@ -116,10 +117,19 @@ int Xorriso_opt_args(struct XorrisO *xorriso, char *cmd, return(*end_idx); if((flag&16) && (*end_idx)>idx) (*end_idx)--; + *optc= *end_idx - idx; - *optv= argv+idx; - if(*optc<=0 || !do_expand) + *optv= NULL; + if(*optc<=0 || !do_expand) { + if(*optc > 0) { + Xorriso_alloc_meM(*optv, char *, *optc); + for(i= 0; i < *optc; i++) { + Xorriso_alloc_meM((*optv)[i], char, strlen(argv[idx + i]) + 1); + strcpy((*optv)[i], argv[idx + i]); + } + } return(1); + } patterns= calloc(*optc, sizeof(char *)); if(patterns==NULL) { no_memory:; @@ -147,10 +157,12 @@ no_memory:; } if(flag&2) ret= Xorriso_expand_disk_pattern(xorriso, nump, patterns, was_empty, - &filec, &filev, &mem, (flag>>5)&3); + &filec, &filev, &mem, + ((flag >> 5) & 3) | ((!!(flag & 1024)) << 3)); else ret= Xorriso_expand_pattern(xorriso, nump, patterns, was_empty, - &filec, &filev, &mem, (flag>>5)&3); + &filec, &filev, &mem, + ((flag >> 5) & 3) | ((!!(flag & 1024)) << 3)); if(ret<=0) {ret= 0; goto ex;} for(i= 0; i: Restore. (line 111) -* -cut_out inserts piece of data file: Insert. (line 124) +* -cut_out inserts piece of data file: Insert. (line 135) * -data_cache_size adjusts read cache size: Loading. (line 332) * -dev acquires one drive for input and output: AqDrive. (line 12) * -devices gets list of drives: Inquiry. (line 7) @@ -5293,7 +5304,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -list_formats lists available formats: Writing. (line 129) * -list_profiles lists supported media: Writing. (line 177) * -list_speeds lists available write speeds: Writing. (line 140) -* -lns creates ISO symbolic link: Insert. (line 166) +* -lns creates ISO symbolic link: Insert. (line 177) * -load addresses a particular session as input: Loading. (line 33) * -local_charset sets terminal character set: Charset. (line 57) * -logfile logs output channels to file: Frontend. (line 19) @@ -5310,7 +5321,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -map_single inserts path: Insert. (line 93) * -mark sets synchronizing message: Frontend. (line 23) * -md5 controls handling of MD5 sums: Loading. (line 182) -* -mkdir creates ISO directory: Insert. (line 162) +* -mkdir creates ISO directory: Insert. (line 173) * -modesty_on_drive keep drive buffer hungry: SetWrite. (line 336) * -mount issues mount command for ISO session: Restore. (line 146) * -mount_cmd composes mount command line: Inquiry. (line 49) @@ -5402,6 +5413,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -uid sets global ownership: SetWrite. (line 284) * -update inserts path if different: Insert. (line 100) * -update_l inserts paths if different: Insert. (line 120) +* -update_l inserts paths if different <1>: Insert. (line 124) * -update_r inserts paths if different: Insert. (line 110) * -use_immed_bit controls use of Immed bit: SetWrite. (line 374) * -use_readline enables readline for dialog: DialogCtl. (line 26) @@ -5471,9 +5483,9 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Dialog, EOF resistant, -named_pipe_loop: Frontend. (line 119) * Dialog, line editing, -use_readline: DialogCtl. (line 26) * Dialog, terminal geometry, -page: DialogCtl. (line 18) -* Directories, copy, -cp_clone: Insert. (line 181) -* Directory, copy, -clone: Insert. (line 170) -* Directory, create, -mkdir: Insert. (line 162) +* Directories, copy, -cp_clone: Insert. (line 192) +* Directory, copy, -clone: Insert. (line 181) +* Directory, create, -mkdir: Insert. (line 173) * Directory, delete, -rmdir: Manip. (line 29) * disk_path, _definition: Insert. (line 6) * Drive, accessability, -drive_class: Loading. (line 73) @@ -5556,6 +5568,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Insert, file exclusion, -quoted_not_list: SetInsert. (line 66) * Insert, if different, -update: Insert. (line 100) * Insert, if different, -update_l: Insert. (line 120) +* Insert, if different, -update_lxi: Insert. (line 124) * Insert, if different, -update_r: Insert. (line 110) * Insert, large file splitting, -split_size: SetInsert. (line 143) * Insert, limit data file size, -file_size_limit: SetInsert. (line 7) @@ -5567,9 +5580,9 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Insert, paths from disk file, -map_l: Insert. (line 96) * Insert, paths from disk file, -path_list: Insert. (line 81) * Insert, paths from disk file, -quoted_path_list: Insert. (line 85) -* Insert, paths, -cpr: Insert. (line 149) +* Insert, paths, -cpr: Insert. (line 160) * Insert, pathspecs, -add: Insert. (line 44) -* Insert, piece of data file, -cut_out: Insert. (line 124) +* Insert, piece of data file, -cut_out: Insert. (line 135) * Interval reader for system area and partitions: Bootable. (line 32) * ISO 9660, _definition: Model. (line 6) * iso_rr_path, _definition: Insert. (line 7) @@ -5684,7 +5697,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Sorting order, for -x, -list_arg_sorting: ArgSort. (line 26) * SUN Disk Label, production: Bootable. (line 354) * SUN SPARC boot images, activation: Bootable. (line 427) -* Symbolic link, create, -lns: Insert. (line 166) +* Symbolic link, create, -lns: Insert. (line 177) * System area, _definition: Bootable. (line 200) * Table-of-content, search sessions, -rom_toc_scan: Loading. (line 278) * Table-of-content, show, -toc: Inquiry. (line 27) @@ -5745,47 +5758,47 @@ Node: ArgSort27030 Node: AqDrive28524 Node: Loading32638 Node: Insert52745 -Node: SetInsert63329 -Node: Manip72648 -Node: CmdFind82607 -Node: Filter101379 -Node: Writing106001 -Node: SetWrite116157 -Node: Bootable140916 -Node: Jigdo166416 -Node: Charset170675 -Node: Exception174004 -Node: DialogCtl180133 -Node: Inquiry182735 -Node: Navigate191523 -Node: Verify199818 -Node: Restore209696 -Node: Emulation218309 -Node: Scripting228768 -Node: Frontend236551 -Node: Examples246177 -Node: ExDevices247355 -Node: ExCreate248016 -Node: ExDialog249316 -Node: ExGrowing250587 -Node: ExModifying251396 -Node: ExBootable251906 -Node: ExCharset252461 -Node: ExPseudo253357 -Node: ExCdrecord254284 -Node: ExMkisofs254604 -Node: ExGrowisofs255961 -Node: ExException257115 -Node: ExTime257573 -Node: ExIncBackup258031 -Node: ExRestore262057 -Node: ExRecovery263003 -Node: Files263575 -Node: Environ264909 -Node: Seealso265615 -Node: Bugreport266332 -Node: Legal266923 -Node: CommandIdx267935 -Node: ConceptIdx285123 +Node: SetInsert64032 +Node: Manip73351 +Node: CmdFind83310 +Node: Filter102082 +Node: Writing106704 +Node: SetWrite116860 +Node: Bootable141619 +Node: Jigdo167119 +Node: Charset171378 +Node: Exception174707 +Node: DialogCtl180836 +Node: Inquiry183438 +Node: Navigate192226 +Node: Verify200521 +Node: Restore210399 +Node: Emulation219012 +Node: Scripting229471 +Node: Frontend237254 +Node: Examples246880 +Node: ExDevices248058 +Node: ExCreate248719 +Node: ExDialog250019 +Node: ExGrowing251290 +Node: ExModifying252099 +Node: ExBootable252609 +Node: ExCharset253164 +Node: ExPseudo254060 +Node: ExCdrecord254987 +Node: ExMkisofs255307 +Node: ExGrowisofs256664 +Node: ExException257818 +Node: ExTime258276 +Node: ExIncBackup258734 +Node: ExRestore262760 +Node: ExRecovery263706 +Node: Files264278 +Node: Environ265612 +Node: Seealso266318 +Node: Bugreport267035 +Node: Legal267626 +Node: CommandIdx268638 +Node: ConceptIdx285899  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index 4832c77b..6d89d314 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.4.7, Nov 19, 2016" +@c man .TH XORRISO 1 "Version 1.4.7, Dec 05, 2016" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -1563,6 +1563,19 @@ exist, then iso_rr_path gets deleted. Perform -update_r with each of the disk_path parameters. iso_rr_path will be composed from disk_path by replacing disk_prefix by iso_rr_prefix. @c man .TP +@item -update_lxi disk_prefix iso_rr_prefix disk_path [***] +@kindex -update_l inserts paths if different +@cindex Insert, if different, -update_lxi +Perform -update_r with each of the disk_path parameters and with iso_rr_paths +in the ISO filesystem which are derived from the disk_path parameters after +exchanging disk_prefix by iso_rr_prefix. So, other than -update_l, this detects +missing matches of disk_path and deletes the corresponding iso_rr_path. +@* +Note that relative disk_paths and disk_path patterns are interpreted as +sub paths of the current disk working directory -cdx. The corresponding +iso_rr_paths are derived by exchanging disk_prefix by iso_rr_prefix before +pattern expansion happens. The current -cdi directory has no influence. +@c man .TP @item -cut_out disk_path byte_offset byte_count iso_rr_path @kindex -cut_out inserts piece of data file @cindex Insert, piece of data file, -cut_out diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index f908237f..22f5a593 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2016.12.05.101546" +#define Xorriso_timestamP "2016.12.05.132927"