New command -update_lxi

This commit is contained in:
Thomas Schmitt 2016-12-05 14:35:04 +01:00
parent 9b75d21e2a
commit 7b12dd0dda
12 changed files with 267 additions and 94 deletions

View File

@ -2024,6 +2024,7 @@ ex:;
/* @param flag bit0= a match count !=1 is a FAILURE event /* @param flag bit0= a match count !=1 is a FAILURE event
bit1= with bit0 tolerate 0 matches if pattern is a constant bit1= with bit0 tolerate 0 matches if pattern is a constant
bit2= do not issue debug messages about temporay memory needs 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 Xorriso_expand_pattern(struct XorrisO *xorriso,
int num_patterns, char **patterns, int extra_filec, 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); mem, &dive_count, 1 | abs_adr);
if(ret<=0) if(ret<=0)
goto ex; 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++; count++;
Xorriso_eval_nonmatch(xorriso, patterns[i], &nonconst_mismatches, mem, 0); Xorriso_eval_nonmatch(xorriso, patterns[i], &nonconst_mismatches, mem, 0);
} }
@ -2105,7 +2107,7 @@ int Xorriso_expand_pattern(struct XorrisO *xorriso,
count+= extra_filec; count+= extra_filec;
(*mem)+= extra_filec * sizeof(char *); (*mem)+= extra_filec * sizeof(char *);
if(count<=0) if(count<=0)
{ret= 0; goto ex;} {ret= !!(flag & 8); goto ex;}
ret= Xorriso_alloc_pattern_mem(xorriso, *mem, count, filev, !!(flag & 4)); ret= Xorriso_alloc_pattern_mem(xorriso, *mem, count, filev, !!(flag & 4));
if(ret<=0) if(ret<=0)
goto ex; goto ex;
@ -2122,7 +2124,8 @@ int Xorriso_expand_pattern(struct XorrisO *xorriso,
mem, &dive_count, abs_adr); mem, &dive_count, abs_adr);
if(ret<=0) if(ret<=0)
goto ex; 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]); (*filev)[*filec]= strdup(patterns[i]);
if((*filev)[*filec]==NULL) { if((*filev)[*filec]==NULL) {
(*mem)= strlen(patterns[i])+1; (*mem)= strlen(patterns[i])+1;

View File

@ -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 /* @param flag bit0= a match count !=1 is a FAILURE event
bit1= with bit0 tolerate 0 matches if pattern is a constant 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 Xorriso_expand_disk_pattern(struct XorrisO *xorriso,
int num_patterns, char **patterns, int extra_filec, 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); mem, &dive_count, 1 | abs_adr);
if(ret<=0) if(ret<=0)
goto ex; 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++; count++;
ret= Xorriso_eval_nonmatch(xorriso, patterns[i], ret= Xorriso_eval_nonmatch(xorriso, patterns[i],
&nonconst_mismatches, mem, 0); &nonconst_mismatches, mem, 0);
@ -697,7 +699,7 @@ int Xorriso_expand_disk_pattern(struct XorrisO *xorriso,
(*mem)+= extra_filec * sizeof(char *); (*mem)+= extra_filec * sizeof(char *);
if(count<=0) if(count<=0)
{ret= 0; goto ex;} {ret= !(flag & 8); goto ex;}
ret= Xorriso_alloc_pattern_mem(xorriso, *mem, count, filev, 0); ret= Xorriso_alloc_pattern_mem(xorriso, *mem, count, filev, 0);
if(ret<=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); ret= Xorriso_prepare_expansion_pattern(xorriso, patterns[i], 4);
if(ret<=0) if(ret<=0)
goto ex; goto ex;
if(ret == 2) if(ret==2)
abs_adr= 4; abs_adr= 4;
if(patterns[i][0]=='/' || abs_adr) { if(patterns[i][0]=='/' || abs_adr) {
@ -727,7 +729,8 @@ int Xorriso_expand_disk_pattern(struct XorrisO *xorriso,
if(ret<=0) if(ret<=0)
goto ex; 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]); (*filev)[*filec]= strdup(patterns[i]);
if((*filev)[*filec]==NULL) { if((*filev)[*filec]==NULL) {
(*mem)= strlen(patterns[i])+1; (*mem)= strlen(patterns[i])+1;

View File

@ -1311,3 +1311,26 @@ int Xorriso__to_upper(char *in, char *out, int out_size, int flag)
return(in[i] == 0); 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);
}

View File

@ -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); 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 */ #endif /* ! Xorriso_pvt_misc_includeD */

View File

@ -1983,6 +1983,9 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" Like -update but affecting all files below directories.", " Like -update but affecting all files below directories.",
" -update_l disk_prefix iso_rr_prefix disk_path [***]", " -update_l disk_prefix iso_rr_prefix disk_path [***]",
" Performs -update_r with each 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", " -cut_out disk_path byte_offset byte_count iso_rr_path",
" Map a byte interval of a regular disk file into a regular", " Map a byte interval of a regular disk file into a regular",
" file in the ISO image.", " file in the ISO image.",

View File

@ -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 /* @param flag bit4= do not establish and dispose xorriso->di_array
for update_l for update_l
bit8-11= mode 0= -map_l bit8-11= mode 0= -map_l
1= -compare_l 1= -compare_l
2= -update_l 2= -update_l
3= -extract_l 3= -extract_l
4= -update_lxi
*/ */
int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv, int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag) int *idx, int flag)
{ {
int ret, end_idx, optc= 0, was_failure= 1, i, fret, mode, problem_count; 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; 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 *source_prefix= NULL, *target_prefix= NULL, *cmd, **optv= NULL;
char *eff_source= NULL, *eff_target= NULL, *source_pt, *s_wd, *t_wd; char *eff_source= NULL, *eff_target= NULL, *s_wd, *t_wd;
char **eff_src_array= NULL, **eff_tgt_array= NULL; char **eff_src_array= NULL, **eff_tgt_array= NULL, **opt2v= NULL;
char **arg2v= NULL;
cmd= "-map_l"; cmd= "-map_l";
s_wd= xorriso->wdx; s_wd= xorriso->wdx;
@ -587,6 +590,8 @@ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv,
nt_flag= 2|4; nt_flag= 2|4;
t_wd= xorriso->wdx; t_wd= xorriso->wdx;
opt_args_flag= 0; opt_args_flag= 0;
} else if(mode == 4) {
cmd= "-update_lxi";
} }
end_idx= Xorriso_end_idx(xorriso, argc, argv, *idx, 1|2); 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); &optc, &optv, opt_args_flag);
if(ret<=0) if(ret<=0)
goto ex; 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 && if(mode == 3 &&
(xorriso->do_restore_sort_lba || !(xorriso->ino_behavior & 4))) { (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++) for(i= 0; i < optc; i++)
eff_src_array[i]= eff_tgt_array[i]= NULL; eff_src_array[i]= eff_tgt_array[i]= NULL;
} }
if(mode == 2 && !((xorriso->ino_behavior & 2) || (flag & 16) || if((mode == 2 || mode == 4) &&
xorriso->di_array != NULL)) { !((xorriso->ino_behavior & 2) || (flag & 16) ||
xorriso->di_array != NULL)) {
/* Create all-image node array sorted by isofs.di */ /* Create all-image node array sorted by isofs.di */
ret= Xorriso_make_di_array(xorriso, 0); ret= Xorriso_make_di_array(xorriso, 0);
if(ret <= 0) if(ret <= 0)
@ -640,26 +716,23 @@ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv,
eff_source, ns_flag); eff_source, ns_flag);
if(ret<=0) if(ret<=0)
goto ex; goto ex;
strcpy(eff_target, target_prefix); ret= Xorriso__exchange_prefix(source_prefix, target_prefix,
source_pt= eff_source; eff_source, eff_target, 0);
if(source_prefix[0]) { if(ret == 0) {
if(strncmp(source_prefix, eff_source, strlen(source_prefix))!=0) { sprintf(xorriso->info_text, "%s: disk_path ", cmd);
sprintf(xorriso->info_text, "%s: disk_path ", cmd); Text_shellsafe(eff_source, xorriso->info_text, 1);
Text_shellsafe(eff_source, xorriso->info_text, 1); strcat(xorriso->info_text, " does not begin with disk_prefix ");
strcat(xorriso->info_text, " does not begin with disk_prefix "); Text_shellsafe(source_prefix, xorriso->info_text, 1);
Text_shellsafe(source_prefix, xorriso->info_text, 1); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 1);
ret= 0; goto ex;
}
source_pt+= strlen(source_prefix);
} }
strcat(eff_target, source_pt); if(ret <= 0)
goto ex;
if(mode==0) if(mode==0)
ret= Xorriso_option_map(xorriso, eff_source, eff_target, 2); ret= Xorriso_option_map(xorriso, eff_source, eff_target, 2);
else if(mode==1) else if(mode==1)
ret= Xorriso_option_compare(xorriso, eff_source, eff_target, 2|8); 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); ret= Xorriso_option_update(xorriso, eff_source, eff_target, 2 | 8 | 16);
else if(mode==3) { else if(mode==3) {
if(eff_src_array != NULL) { if(eff_src_array != NULL) {
@ -701,7 +774,7 @@ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv,
if(mode==0) if(mode==0)
Xorriso_pacifier_callback(xorriso, "files added", xorriso->pacifier_count, Xorriso_pacifier_callback(xorriso, "files added", xorriso->pacifier_count,
xorriso->pacifier_total, "", 1); 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_callback(xorriso, "content bytes read",
xorriso->pacifier_count, 0, "", 1 | 8 | 32); xorriso->pacifier_count, 0, "", 1 | 8 | 32);
else if(mode==3) else if(mode==3)
@ -719,6 +792,13 @@ ex:;
Xorriso_free_meM(eff_target); Xorriso_free_meM(eff_target);
(*idx)= end_idx; (*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, &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) if(ret<=0)
return(ret); return(ret);
return(!was_failure); return(!was_failure);

View File

@ -82,6 +82,7 @@ int Xorriso_end_idx(struct XorrisO *xorriso,
bit7= silently tolerate empty argument list bit7= silently tolerate empty argument list
bit8= free the eventually allocated sub_vector bit8= free the eventually allocated sub_vector
bit9= always expand wildcards bit9= always expand wildcards
bit10= do not add unresolved pattern to optv
*/ */
int Xorriso_opt_args(struct XorrisO *xorriso, char *cmd, int Xorriso_opt_args(struct XorrisO *xorriso, char *cmd,
int argc, char **argv, int idx, int argc, char **argv, int idx,
@ -116,10 +117,19 @@ int Xorriso_opt_args(struct XorrisO *xorriso, char *cmd,
return(*end_idx); return(*end_idx);
if((flag&16) && (*end_idx)>idx) if((flag&16) && (*end_idx)>idx)
(*end_idx)--; (*end_idx)--;
*optc= *end_idx - idx; *optc= *end_idx - idx;
*optv= argv+idx; *optv= NULL;
if(*optc<=0 || !do_expand) 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); return(1);
}
patterns= calloc(*optc, sizeof(char *)); patterns= calloc(*optc, sizeof(char *));
if(patterns==NULL) { if(patterns==NULL) {
no_memory:; no_memory:;
@ -147,10 +157,12 @@ no_memory:;
} }
if(flag&2) if(flag&2)
ret= Xorriso_expand_disk_pattern(xorriso, nump, patterns, was_empty, 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 else
ret= Xorriso_expand_pattern(xorriso, nump, patterns, was_empty, 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) if(ret<=0)
{ret= 0; goto ex;} {ret= 0; goto ex;}
for(i= 0; i<was_empty; i++) { for(i= 0; i<was_empty; i++) {
@ -580,7 +592,8 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
"getfattr","getfattri","getfattr_r","getfattr_ri","hide", "getfattr","getfattri","getfattr_r","getfattr_ri","hide",
"launch_frontend","ls","lsi","lsl","lsli","lsd","lsdi","lsdl","lsdli", "launch_frontend","ls","lsi","lsl","lsli","lsd","lsdi","lsdl","lsdli",
"lsx","lslx","lsdx","lsdlx","map_l","mv","mvi","mkdir","mkdiri", "lsx","lslx","lsdx","lsdlx","map_l","mv","mvi","mkdir","mkdiri",
"not_paths","rm","rmi","rm_r","rm_ri","rmdir","rmdiri","update_l", "not_paths","rm","rmi","rm_r","rm_ri","rmdir","rmdiri",
"update_l","update_lx","update_lxi",
"setfacl","setfacli","setfacl_list","setfacl_listi", "setfacl","setfacli","setfacl_list","setfacl_listi",
"setfacl_r","setfacl_ri","setfattr","setfattri", "setfacl_r","setfacl_ri","setfattr","setfattri",
"setfattr_list","setfattr_listi","setfattr_r","setfattr_ri", "setfattr_list","setfattr_listi","setfattr_r","setfattr_ri",
@ -704,7 +717,8 @@ int Xorriso_cmd_sorting_rank(struct XorrisO *xorriso,
"* Inserting files into ISO image:", "* Inserting files into ISO image:",
"disk_pattern", "add_plainly", "disk_pattern", "add_plainly",
"mkdir", "lns", "add", "path_list", "quoted_path_list", "mkdir", "lns", "add", "path_list", "quoted_path_list",
"map", "map_single", "map_l", "update", "update_r", "update_l", "map", "map_single", "map_l", "update", "update_r",
"update_l", "update_lx", "update_lxi",
"cut_out", "cpr", "cut_out", "cpr",
"clone", "cp_clone", "clone", "cp_clone",
@ -1927,9 +1941,12 @@ if (0) {
(*idx)+= 2; (*idx)+= 2;
ret= Xorriso_option_update(xorriso, arg1, arg2, 1); ret= Xorriso_option_update(xorriso, arg1, arg2, 1);
} else if(strcmp(cmd,"update_l")==0) { } else if(strcmp(cmd,"update_l") == 0 || strcmp(cmd,"update_lx") == 0) {
ret= Xorriso_option_map_l(xorriso, argc, argv, idx, 2<<8); ret= Xorriso_option_map_l(xorriso, argc, argv, idx, 2<<8);
} else if(strcmp(cmd,"update_lxi") == 0) {
ret= Xorriso_option_map_l(xorriso, argc, argv, idx, 4 << 8);
} else if(strcmp(cmd,"update_r")==0) { } else if(strcmp(cmd,"update_r")==0) {
(*idx)+= 2; (*idx)+= 2;
ret= Xorriso_option_update(xorriso, arg1, arg2, 1|8); ret= Xorriso_option_update(xorriso, arg1, arg2, 1|8);

View File

@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps .\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1) .\" other parameters are allowed: see man(7), man(1)
.TH XORRISO 1 "Version 1.4.7, Nov 19, 2016" .TH XORRISO 1 "Version 1.4.7, Dec 05, 2016"
.\" Please adjust this date whenever revising the manpage. .\" Please adjust this date whenever revising the manpage.
.\" .\"
.\" Some roff macros, for reference: .\" Some roff macros, for reference:
@ -1267,6 +1267,17 @@ exist, then iso_rr_path gets deleted.
Perform \-update_r with each of the disk_path parameters. iso_rr_path will be 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. composed from disk_path by replacing disk_prefix by iso_rr_prefix.
.TP .TP
\fB\-update_lxi\fR disk_prefix iso_rr_prefix disk_path [***]
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.
.br
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.
.TP
\fB\-cut_out\fR disk_path byte_offset byte_count iso_rr_path \fB\-cut_out\fR 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 Map a byte interval of a regular disk file into a regular file in the ISO
image. image.

View File

@ -1741,6 +1741,7 @@ int Xorriso_option_map(struct XorrisO *xorriso, char *disk_path,
1= -compare_l 1= -compare_l
2= -update_l 2= -update_l
3= -extract_l 3= -extract_l
4= -update_lxi @since 1.4.8
*/ */
/* @since 0.2.0 */ /* @since 0.2.0 */
int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv, int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv,

View File

@ -1134,6 +1134,17 @@ filesystem.
Perform -update_r with each of the disk_path parameters. Perform -update_r with each of the disk_path parameters.
iso_rr_path will be composed from disk_path by replacing iso_rr_path will be composed from disk_path by replacing
disk_prefix by iso_rr_prefix. disk_prefix by iso_rr_prefix.
-update_lxi disk_prefix iso_rr_prefix disk_path [***]
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.
-cut_out disk_path byte_offset byte_count iso_rr_path -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 Map a byte interval of a regular disk file into a regular file in
the ISO image. This may be necessary if the disk file is larger the ISO image. This may be necessary if the disk file is larger
@ -5214,7 +5225,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -chmod_r sets permissions in ISO image: Manip. (line 66) * -chmod_r sets permissions in ISO image: Manip. (line 66)
* -chown sets ownership in ISO image: Manip. (line 43) * -chown sets ownership in ISO image: Manip. (line 43)
* -chown_r sets ownership in ISO image: Manip. (line 47) * -chown_r sets ownership in ISO image: Manip. (line 47)
* -clone copies ISO directory tree: Insert. (line 170) * -clone copies ISO directory tree: Insert. (line 181)
* -close controls media closing: SetWrite. (line 401) * -close controls media closing: SetWrite. (line 401)
* -close_damaged closes damaged track and session: Writing. (line 164) * -close_damaged closes damaged track and session: Writing. (line 164)
* -close_filter_list bans filter registration: Filter. (line 50) * -close_filter_list bans filter registration: Filter. (line 50)
@ -5227,12 +5238,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -concat copies ISO file content: Restore. (line 118) * -concat copies ISO file content: Restore. (line 118)
* -copyright_file sets copyright file name: SetWrite. (line 239) * -copyright_file sets copyright file name: SetWrite. (line 239)
* -cpax copies files to disk: Restore. (line 100) * -cpax copies files to disk: Restore. (line 100)
* -cpr inserts like with cp -r: Insert. (line 149) * -cpr inserts like with cp -r: Insert. (line 160)
* -cpx copies files to disk: Restore. (line 89) * -cpx copies files to disk: Restore. (line 89)
* -cp_clone copies ISO directory tree: Insert. (line 181) * -cp_clone copies ISO directory tree: Insert. (line 192)
* -cp_rx copies file trees to disk: Restore. (line 103) * -cp_rx copies file trees to disk: Restore. (line 103)
* -cp_rx copies file trees to disk <1>: Restore. (line 111) * -cp_rx copies file trees to disk <1>: 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) * -data_cache_size adjusts read cache size: Loading. (line 332)
* -dev acquires one drive for input and output: AqDrive. (line 12) * -dev acquires one drive for input and output: AqDrive. (line 12)
* -devices gets list of drives: Inquiry. (line 7) * -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_formats lists available formats: Writing. (line 129)
* -list_profiles lists supported media: Writing. (line 177) * -list_profiles lists supported media: Writing. (line 177)
* -list_speeds lists available write speeds: Writing. (line 140) * -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) * -load addresses a particular session as input: Loading. (line 33)
* -local_charset sets terminal character set: Charset. (line 57) * -local_charset sets terminal character set: Charset. (line 57)
* -logfile logs output channels to file: Frontend. (line 19) * -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) * -map_single inserts path: Insert. (line 93)
* -mark sets synchronizing message: Frontend. (line 23) * -mark sets synchronizing message: Frontend. (line 23)
* -md5 controls handling of MD5 sums: Loading. (line 182) * -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) * -modesty_on_drive keep drive buffer hungry: SetWrite. (line 336)
* -mount issues mount command for ISO session: Restore. (line 146) * -mount issues mount command for ISO session: Restore. (line 146)
* -mount_cmd composes mount command line: Inquiry. (line 49) * -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) * -uid sets global ownership: SetWrite. (line 284)
* -update inserts path if different: Insert. (line 100) * -update inserts path if different: Insert. (line 100)
* -update_l inserts paths if different: Insert. (line 120) * -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) * -update_r inserts paths if different: Insert. (line 110)
* -use_immed_bit controls use of Immed bit: SetWrite. (line 374) * -use_immed_bit controls use of Immed bit: SetWrite. (line 374)
* -use_readline enables readline for dialog: DialogCtl. (line 26) * -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, EOF resistant, -named_pipe_loop: Frontend. (line 119)
* Dialog, line editing, -use_readline: DialogCtl. (line 26) * Dialog, line editing, -use_readline: DialogCtl. (line 26)
* Dialog, terminal geometry, -page: DialogCtl. (line 18) * Dialog, terminal geometry, -page: DialogCtl. (line 18)
* Directories, copy, -cp_clone: Insert. (line 181) * Directories, copy, -cp_clone: Insert. (line 192)
* Directory, copy, -clone: Insert. (line 170) * Directory, copy, -clone: Insert. (line 181)
* Directory, create, -mkdir: Insert. (line 162) * Directory, create, -mkdir: Insert. (line 173)
* Directory, delete, -rmdir: Manip. (line 29) * Directory, delete, -rmdir: Manip. (line 29)
* disk_path, _definition: Insert. (line 6) * disk_path, _definition: Insert. (line 6)
* Drive, accessability, -drive_class: Loading. (line 73) * 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, file exclusion, -quoted_not_list: SetInsert. (line 66)
* Insert, if different, -update: Insert. (line 100) * Insert, if different, -update: Insert. (line 100)
* Insert, if different, -update_l: Insert. (line 120) * 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, if different, -update_r: Insert. (line 110)
* Insert, large file splitting, -split_size: SetInsert. (line 143) * Insert, large file splitting, -split_size: SetInsert. (line 143)
* Insert, limit data file size, -file_size_limit: SetInsert. (line 7) * 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, -map_l: Insert. (line 96)
* Insert, paths from disk file, -path_list: Insert. (line 81) * Insert, paths from disk file, -path_list: Insert. (line 81)
* Insert, paths from disk file, -quoted_path_list: Insert. (line 85) * 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, 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) * Interval reader for system area and partitions: Bootable. (line 32)
* ISO 9660, _definition: Model. (line 6) * ISO 9660, _definition: Model. (line 6)
* iso_rr_path, _definition: Insert. (line 7) * 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) * Sorting order, for -x, -list_arg_sorting: ArgSort. (line 26)
* SUN Disk Label, production: Bootable. (line 354) * SUN Disk Label, production: Bootable. (line 354)
* SUN SPARC boot images, activation: Bootable. (line 427) * 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) * System area, _definition: Bootable. (line 200)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 278) * Table-of-content, search sessions, -rom_toc_scan: Loading. (line 278)
* Table-of-content, show, -toc: Inquiry. (line 27) * Table-of-content, show, -toc: Inquiry. (line 27)
@ -5745,47 +5758,47 @@ Node: ArgSort27030
Node: AqDrive28524 Node: AqDrive28524
Node: Loading32638 Node: Loading32638
Node: Insert52745 Node: Insert52745
Node: SetInsert63329 Node: SetInsert64032
Node: Manip72648 Node: Manip73351
Node: CmdFind82607 Node: CmdFind83310
Node: Filter101379 Node: Filter102082
Node: Writing106001 Node: Writing106704
Node: SetWrite116157 Node: SetWrite116860
Node: Bootable140916 Node: Bootable141619
Node: Jigdo166416 Node: Jigdo167119
Node: Charset170675 Node: Charset171378
Node: Exception174004 Node: Exception174707
Node: DialogCtl180133 Node: DialogCtl180836
Node: Inquiry182735 Node: Inquiry183438
Node: Navigate191523 Node: Navigate192226
Node: Verify199818 Node: Verify200521
Node: Restore209696 Node: Restore210399
Node: Emulation218309 Node: Emulation219012
Node: Scripting228768 Node: Scripting229471
Node: Frontend236551 Node: Frontend237254
Node: Examples246177 Node: Examples246880
Node: ExDevices247355 Node: ExDevices248058
Node: ExCreate248016 Node: ExCreate248719
Node: ExDialog249316 Node: ExDialog250019
Node: ExGrowing250587 Node: ExGrowing251290
Node: ExModifying251396 Node: ExModifying252099
Node: ExBootable251906 Node: ExBootable252609
Node: ExCharset252461 Node: ExCharset253164
Node: ExPseudo253357 Node: ExPseudo254060
Node: ExCdrecord254284 Node: ExCdrecord254987
Node: ExMkisofs254604 Node: ExMkisofs255307
Node: ExGrowisofs255961 Node: ExGrowisofs256664
Node: ExException257115 Node: ExException257818
Node: ExTime257573 Node: ExTime258276
Node: ExIncBackup258031 Node: ExIncBackup258734
Node: ExRestore262057 Node: ExRestore262760
Node: ExRecovery263003 Node: ExRecovery263706
Node: Files263575 Node: Files264278
Node: Environ264909 Node: Environ265612
Node: Seealso265615 Node: Seealso266318
Node: Bugreport266332 Node: Bugreport267035
Node: Legal266923 Node: Legal267626
Node: CommandIdx267935 Node: CommandIdx268638
Node: ConceptIdx285123 Node: ConceptIdx285899
 
End Tag Table End Tag Table

View File

@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps @c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @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 .\" 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 .\" Please adjust this date whenever revising the manpage.
@c man .\" @c man .\"
@c man .\" Some roff macros, for reference: @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 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. composed from disk_path by replacing disk_prefix by iso_rr_prefix.
@c man .TP @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 @item -cut_out disk_path byte_offset byte_count iso_rr_path
@kindex -cut_out inserts piece of data file @kindex -cut_out inserts piece of data file
@cindex Insert, piece of data file, -cut_out @cindex Insert, piece of data file, -cut_out

View File

@ -1 +1 @@
#define Xorriso_timestamP "2016.12.05.101546" #define Xorriso_timestamP "2016.12.05.132927"