Working towards exclusion of user defined absolute paths and leaf patterns
This commit is contained in:
parent
97c22f86a4
commit
1576983e17
@ -1975,7 +1975,7 @@ int Lstring_append_binary(struct LstrinG **entry, char *data, int data_len,
|
|||||||
for(target= *entry; target->next!=NULL; target= target->next);
|
for(target= *entry; target->next!=NULL; target= target->next);
|
||||||
if(Lstring_new_binary(&newby, data, data_len, target, 0)<=0)
|
if(Lstring_new_binary(&newby, data, data_len, target, 0)<=0)
|
||||||
return(-1);
|
return(-1);
|
||||||
if(*entry!=NULL)
|
if(*entry==NULL)
|
||||||
*entry= newby;
|
*entry= newby;
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
@ -2696,7 +2696,7 @@ int Exclusions_match(struct ExclusionS *o, char *abs_path, int flag)
|
|||||||
|
|
||||||
/* determine leafname */
|
/* determine leafname */
|
||||||
was_non_slash= 0;
|
was_non_slash= 0;
|
||||||
for(leaf_pt= abs_path+strlen(abs_path); leaf_pt>leaf; leaf_pt--) {
|
for(leaf_pt= abs_path+strlen(abs_path); leaf_pt>abs_path; leaf_pt--) {
|
||||||
if(*leaf_pt=='/') {
|
if(*leaf_pt=='/') {
|
||||||
if(was_non_slash) {
|
if(was_non_slash) {
|
||||||
leaf_pt++;
|
leaf_pt++;
|
||||||
@ -2818,6 +2818,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
|||||||
m->do_disk_pattern= 2;
|
m->do_disk_pattern= 2;
|
||||||
m->temp_mem_limit= 16*1024*1024;
|
m->temp_mem_limit= 16*1024*1024;
|
||||||
m->disk_exclusions= NULL;
|
m->disk_exclusions= NULL;
|
||||||
|
m->disk_excl_mode= 1;
|
||||||
m->use_stdin= 0;
|
m->use_stdin= 0;
|
||||||
m->result_page_length= 0;
|
m->result_page_length= 0;
|
||||||
m->result_page_width= 80;
|
m->result_page_width= 80;
|
||||||
@ -3960,6 +3961,14 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_default= (xorriso->disk_excl_mode==1);
|
||||||
|
sprintf(line, "-not_mgt %s:%s:%s\n",
|
||||||
|
(xorriso->disk_excl_mode&1 ? "on" : "off"),
|
||||||
|
(xorriso->disk_excl_mode&2 ? "param_on" : "param_off"),
|
||||||
|
(xorriso->disk_excl_mode&4 ? "subtree_on" : "subtree_off"));
|
||||||
|
if(!(is_default && no_defaults))
|
||||||
|
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||||
|
|
||||||
is_default= (xorriso->do_iso_rr_pattern==1);
|
is_default= (xorriso->do_iso_rr_pattern==1);
|
||||||
sprintf(line,"-iso_rr_pattern %s\n",
|
sprintf(line,"-iso_rr_pattern %s\n",
|
||||||
(xorriso->do_iso_rr_pattern == 1 ? "on" :
|
(xorriso->do_iso_rr_pattern == 1 ? "on" :
|
||||||
@ -4655,7 +4664,7 @@ int Xorriso_find_compare(struct XorrisO *xorriso, void *boss_iter,
|
|||||||
return(ret);
|
return(ret);
|
||||||
|
|
||||||
/* compare exclusions against disk_path resp. leaf name */
|
/* compare exclusions against disk_path resp. leaf name */
|
||||||
ret= Xorriso_path_is_excluded(xorriso, disk_path, 0);
|
ret= Xorriso_path_is_excluded(xorriso, disk_path, !(flag&2));
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
return(ret);
|
return(ret);
|
||||||
if(ret>0)
|
if(ret>0)
|
||||||
@ -5431,7 +5440,7 @@ int Xorriso_eval_problem_status(struct XorrisO *xorriso, int ret, int flag)
|
|||||||
ret= 2;
|
ret= 2;
|
||||||
} else if(xorriso->problem_status > 0) {
|
} else if(xorriso->problem_status > 0) {
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"xorriso : aborting : -abort_on '%s' encountered '%s'",
|
"xorriso : aborting : -abort_on '%s' encountered '%s'\n",
|
||||||
xorriso->abort_on_text, xorriso->problem_status_text);
|
xorriso->abort_on_text, xorriso->problem_status_text);
|
||||||
if(!(flag&1))
|
if(!(flag&1))
|
||||||
Xorriso_info(xorriso, 0);/* submit not as problem event */
|
Xorriso_info(xorriso, 0);/* submit not as problem event */
|
||||||
@ -6386,7 +6395,7 @@ int Xorriso_findx(struct XorrisO *xorriso, struct FindjoB *job,
|
|||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
abs_dir_path= abs_dir_path_data;
|
abs_dir_path= abs_dir_path_data;
|
||||||
ret= Xorriso_path_is_excluded(xorriso, abs_dir_path, 0);
|
ret= Xorriso_path_is_excluded(xorriso, abs_dir_path, !(flag&1));
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
goto ex;
|
goto ex;
|
||||||
if(ret>0)
|
if(ret>0)
|
||||||
@ -6450,7 +6459,7 @@ int Xorriso_findx(struct XorrisO *xorriso, struct FindjoB *job,
|
|||||||
ret= Xorriso_make_abs_adr(xorriso, dir_path, name, path, 4);
|
ret= Xorriso_make_abs_adr(xorriso, dir_path, name, path, 4);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
ret= Xorriso_path_is_excluded(xorriso, abs_path, 0);
|
ret= Xorriso_path_is_excluded(xorriso, abs_path, 0); /* (is never param) */
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
goto ex;
|
goto ex;
|
||||||
if(ret>0)
|
if(ret>0)
|
||||||
@ -7254,7 +7263,8 @@ ex:;
|
|||||||
/* @param boss_iter Opaque handle to be forwarded to actions in ISO image
|
/* @param boss_iter Opaque handle to be forwarded to actions in ISO image
|
||||||
Set to NULL if calling this function from outside ISO world
|
Set to NULL if calling this function from outside ISO world
|
||||||
@param flag bit2= -follow: this is not a command parameter
|
@param flag bit2= -follow: this is not a command parameter
|
||||||
@return <=0 error, 1= ok , 2= iso_rr_path has been deleted
|
@return <=0 error, 1= ok , 2= iso_rr_path has been deleted ,
|
||||||
|
3= no action taken
|
||||||
*/
|
*/
|
||||||
int Xorriso_update_interpreter(struct XorrisO *xorriso, void *boss_iter,
|
int Xorriso_update_interpreter(struct XorrisO *xorriso, void *boss_iter,
|
||||||
int compare_result, char *disk_path,
|
int compare_result, char *disk_path,
|
||||||
@ -7269,9 +7279,17 @@ int Xorriso_update_interpreter(struct XorrisO *xorriso, void *boss_iter,
|
|||||||
int partno, total_parts, new_total_parts;
|
int partno, total_parts, new_total_parts;
|
||||||
off_t offset, bytes, total_bytes, disk_size, first_bytes;
|
off_t offset, bytes, total_bytes, disk_size, first_bytes;
|
||||||
|
|
||||||
|
if((compare_result&3)==3) {
|
||||||
|
sprintf(xorriso->info_text, "Missing on disk and in ISO: disk_path %s",
|
||||||
|
Text_shellsafe(disk_path, sfe, 0));
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 1);
|
||||||
|
xorriso->find_compare_result= -1;
|
||||||
|
ret= 3; goto ex;
|
||||||
|
}
|
||||||
|
|
||||||
if(compare_result&((1<<11)|(1<<13))) {
|
if(compare_result&((1<<11)|(1<<13))) {
|
||||||
/* cannot open regular disk file, early eof of disk file */
|
/* cannot open regular disk file, early eof of disk file */
|
||||||
sprintf(xorriso->info_text, "Problems with reading disk file %s\n",
|
sprintf(xorriso->info_text, "Problems with reading disk file %s",
|
||||||
Text_shellsafe(disk_path, sfe, 0));
|
Text_shellsafe(disk_path, sfe, 0));
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 1);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 1);
|
||||||
xorriso->find_compare_result= -1;
|
xorriso->find_compare_result= -1;
|
||||||
@ -7406,7 +7424,7 @@ ex:;
|
|||||||
return(ret);
|
return(ret);
|
||||||
if(deleted)
|
if(deleted)
|
||||||
return(2);
|
return(2);
|
||||||
return(1);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -7441,16 +7459,28 @@ int Xorriso_write_session_log(struct XorrisO *xorriso, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* @param flag bit0= path is a command parameter
|
||||||
|
*/
|
||||||
int Xorriso_path_is_excluded(struct XorrisO *xorriso, char *path, int flag)
|
int Xorriso_path_is_excluded(struct XorrisO *xorriso, char *path, int flag)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
char sfe[5*SfileadrL];
|
||||||
|
|
||||||
|
if(!(xorriso->disk_excl_mode&1)) /* exclusion is off */
|
||||||
|
return(0);
|
||||||
|
if((flag&1) && !(xorriso->disk_excl_mode&2)) /* params are exempted */
|
||||||
|
return(0);
|
||||||
ret= Exclusions_match(xorriso->disk_exclusions, path, 0);
|
ret= Exclusions_match(xorriso->disk_exclusions, path, 0);
|
||||||
if(ret<0) {
|
if(ret<0) {
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"Error during disk file exclusion decision");
|
"Error during disk file exclusion decision");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||||
}
|
}
|
||||||
|
if(ret>0 && (flag&1)) {
|
||||||
|
sprintf(xorriso->info_text, "Disk path parameter excluded by %s : %s",
|
||||||
|
(ret==1 ? "-not_paths" : "-not_leaf"), Text_shellsafe(path, sfe, 0));
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
|
}
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8173,6 +8203,9 @@ int Xorriso_option_compare(struct XorrisO *xorriso, char *disk_path,
|
|||||||
if(ipth[0]==0)
|
if(ipth[0]==0)
|
||||||
ipth= disk_path;
|
ipth= disk_path;
|
||||||
|
|
||||||
|
ret= Xorriso_path_is_excluded(xorriso, disk_path, 1);
|
||||||
|
if(ret!=0)
|
||||||
|
goto report_outcome;
|
||||||
if(!(flag&2)) {
|
if(!(flag&2)) {
|
||||||
Xorriso_pacifier_reset(xorriso, 0);
|
Xorriso_pacifier_reset(xorriso, 0);
|
||||||
mem_lut= xorriso->last_update_time;
|
mem_lut= xorriso->last_update_time;
|
||||||
@ -8221,6 +8254,7 @@ int Xorriso_option_compare(struct XorrisO *xorriso, char *disk_path,
|
|||||||
if(mem_lut!=xorriso->last_update_time && !(flag&2))
|
if(mem_lut!=xorriso->last_update_time && !(flag&2))
|
||||||
Xorriso_pacifier_callback(xorriso, "content bytes read",
|
Xorriso_pacifier_callback(xorriso, "content bytes read",
|
||||||
xorriso->pacifier_count, 0, "", 1);
|
xorriso->pacifier_count, 0, "", 1);
|
||||||
|
report_outcome:;
|
||||||
if(ret>0) {
|
if(ret>0) {
|
||||||
sprintf(xorriso->result_line,
|
sprintf(xorriso->result_line,
|
||||||
"Both file objects match as far as expectable.\n");
|
"Both file objects match as far as expectable.\n");
|
||||||
@ -9668,7 +9702,7 @@ int Xorriso_option_not_leaf(struct XorrisO *xorriso, char *pattern, int flag)
|
|||||||
|
|
||||||
Xorriso__bourne_to_reg(pattern, regexpr, 0);
|
Xorriso__bourne_to_reg(pattern, regexpr, 0);
|
||||||
if(regcomp(&re, regexpr, 0)!=0)
|
if(regcomp(&re, regexpr, 0)!=0)
|
||||||
goto cannot_add;
|
{ret= 0; goto cannot_add;}
|
||||||
ret= Exclusions_add_not_leafs(xorriso->disk_exclusions, pattern, &re, 0);
|
ret= Exclusions_add_not_leafs(xorriso->disk_exclusions, pattern, &re, 0);
|
||||||
if(ret<=0) {
|
if(ret<=0) {
|
||||||
cannot_add:;
|
cannot_add:;
|
||||||
@ -9681,6 +9715,57 @@ cannot_add:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Option -not_mgt */
|
||||||
|
int Xorriso_option_not_mgt(struct XorrisO *xorriso, char *setting, int flag)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
char what_data[SfileadrL], *what, *what_next;
|
||||||
|
|
||||||
|
if(Sfile_str(what_data, setting, 0)<=0) {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-not_mgt: setting string is much too long (%d)",
|
||||||
|
(int) strlen(setting));
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
for(what= what_data; what!=NULL; what= what_next) {
|
||||||
|
what_next= strchr(what, ':');
|
||||||
|
if(what_next!=NULL) {
|
||||||
|
*what_next= 0;
|
||||||
|
what_next++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strcmp(what, "reset")==0 || strcmp(what, "erase")==0) {
|
||||||
|
if(strcmp(what, "reset")==0)
|
||||||
|
xorriso->disk_excl_mode= 1;
|
||||||
|
Exclusions_destroy(&(xorriso->disk_exclusions), 0);
|
||||||
|
ret= Exclusions_new(&(xorriso->disk_exclusions), 0);
|
||||||
|
if(ret<=0) {
|
||||||
|
Xorriso_no_malloc_memory(xorriso, NULL, 0);
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
} else if(strcmp(what, "on")==0) {
|
||||||
|
xorriso->disk_excl_mode|= 1;
|
||||||
|
} else if(strcmp(what, "off")==0) {
|
||||||
|
xorriso->disk_excl_mode&= ~1;
|
||||||
|
} else if(strcmp(what, "param_on")==0) {
|
||||||
|
xorriso->disk_excl_mode|= 2;
|
||||||
|
} else if(strcmp(what, "param_off")==0) {
|
||||||
|
xorriso->disk_excl_mode&= ~2;
|
||||||
|
} else if(strcmp(what, "subtree_on")==0) {
|
||||||
|
xorriso->disk_excl_mode|= 4;
|
||||||
|
} else if(strcmp(what, "subtree_off")==0) {
|
||||||
|
xorriso->disk_excl_mode&= ~4;
|
||||||
|
} else {
|
||||||
|
sprintf(xorriso->info_text, "-not_mgt: unknown setting '%s'", what);
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Option -not_paths */
|
/* Option -not_paths */
|
||||||
int Xorriso_option_not_paths(struct XorrisO *xorriso, int argc, char **argv,
|
int Xorriso_option_not_paths(struct XorrisO *xorriso, int argc, char **argv,
|
||||||
int *idx, int flag)
|
int *idx, int flag)
|
||||||
@ -10170,17 +10255,6 @@ int Xorriso_option_return_with(struct XorrisO *xorriso, char *severity,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Option -revoke_exclusions */
|
|
||||||
int Xorriso_option_revoke_exclusions(struct XorrisO *xorriso, int flag)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
Exclusions_destroy(&(xorriso->disk_exclusions), 0);
|
|
||||||
ret= Exclusions_new(&(xorriso->disk_exclusions), 0);
|
|
||||||
return(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Options -rm alias -rmi , -rm_r alias -rm_ri , -rmdir alias -rmdiri */
|
/* Options -rm alias -rmi , -rm_r alias -rm_ri , -rmdir alias -rmdiri */
|
||||||
/* @param flag bit0=recursive , bit1= remove empty directory: rmdir */
|
/* @param flag bit0=recursive , bit1= remove empty directory: rmdir */
|
||||||
int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv,
|
int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv,
|
||||||
@ -10474,6 +10548,7 @@ int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path,
|
|||||||
char *iso_path, int flag)
|
char *iso_path, int flag)
|
||||||
{
|
{
|
||||||
int ret, mem_pci, zero= 0, result, uret, follow_links;
|
int ret, mem_pci, zero= 0, result, uret, follow_links;
|
||||||
|
int not_in_iso= 0, not_on_disk= 0;
|
||||||
double mem_lut= 0.0, start_time;
|
double mem_lut= 0.0, start_time;
|
||||||
char *ipth, *argv[6], sfe[5*SfileadrL];
|
char *ipth, *argv[6], sfe[5*SfileadrL];
|
||||||
struct stat stbuf;
|
struct stat stbuf;
|
||||||
@ -10498,6 +10573,9 @@ int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path,
|
|||||||
Text_shellsafe(ipth, sfe, 0));
|
Text_shellsafe(ipth, sfe, 0));
|
||||||
Xorriso_info(xorriso,0);
|
Xorriso_info(xorriso,0);
|
||||||
}
|
}
|
||||||
|
ret= Xorriso_path_is_excluded(xorriso, disk_path, 1);
|
||||||
|
if(ret!=0)
|
||||||
|
goto report_outcome;
|
||||||
if(flag&8) {
|
if(flag&8) {
|
||||||
xorriso->find_compare_result= 1;
|
xorriso->find_compare_result= 1;
|
||||||
ret= Xorriso_iso_lstat(xorriso, ipth, &stbuf, 0);
|
ret= Xorriso_iso_lstat(xorriso, ipth, &stbuf, 0);
|
||||||
@ -10508,8 +10586,10 @@ int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path,
|
|||||||
argv[3]= disk_path;
|
argv[3]= disk_path;
|
||||||
zero= 0;
|
zero= 0;
|
||||||
ret= Xorriso_option_find(xorriso, 4, argv, &zero, 2); /* -findi */
|
ret= Xorriso_option_find(xorriso, 4, argv, &zero, 2); /* -findi */
|
||||||
} else
|
} else {
|
||||||
|
not_in_iso= 1;
|
||||||
ret= 1;
|
ret= 1;
|
||||||
|
}
|
||||||
if(ret>0) {
|
if(ret>0) {
|
||||||
ret= lstat(disk_path, &stbuf);
|
ret= lstat(disk_path, &stbuf);
|
||||||
if(ret != -1) {
|
if(ret != -1) {
|
||||||
@ -10533,10 +10613,18 @@ int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path,
|
|||||||
ret= xorriso->find_compare_result;
|
ret= xorriso->find_compare_result;
|
||||||
else
|
else
|
||||||
ret= -1;
|
ret= -1;
|
||||||
} else
|
} else {
|
||||||
ret= xorriso->find_compare_result;
|
ret= xorriso->find_compare_result;
|
||||||
|
not_on_disk= 1;
|
||||||
|
}
|
||||||
} else
|
} else
|
||||||
ret= -1;
|
ret= -1;
|
||||||
|
if(not_on_disk && not_in_iso) {
|
||||||
|
sprintf(xorriso->info_text, "Missing on disk and in ISO: disk_path %s",
|
||||||
|
Text_shellsafe(disk_path, sfe, 0));
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 1);
|
||||||
|
ret= -1;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/* compare ctime too, no filename reporting, eventually silent */
|
/* compare ctime too, no filename reporting, eventually silent */
|
||||||
follow_links= (xorriso->do_follow_links || xorriso->do_follow_param) <<28;
|
follow_links= (xorriso->do_follow_links || xorriso->do_follow_param) <<28;
|
||||||
@ -10547,12 +10635,15 @@ int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path,
|
|||||||
0);
|
0);
|
||||||
if(uret<=0)
|
if(uret<=0)
|
||||||
ret= -1;
|
ret= -1;
|
||||||
|
if(uret==3)
|
||||||
|
ret= -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xorriso->pacifier_interval= mem_pci;
|
xorriso->pacifier_interval= mem_pci;
|
||||||
if(mem_lut!=xorriso->last_update_time && !(flag&2))
|
if(mem_lut!=xorriso->last_update_time && !(flag&2))
|
||||||
Xorriso_pacifier_callback(xorriso, "content bytes read",
|
Xorriso_pacifier_callback(xorriso, "content bytes read",
|
||||||
xorriso->pacifier_count, 0, "", 1);
|
xorriso->pacifier_count, 0, "", 1);
|
||||||
|
report_outcome:;
|
||||||
if(ret>0) {
|
if(ret>0) {
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"No file object needed update.");
|
"No file object needed update.");
|
||||||
@ -10919,6 +11010,14 @@ next_command:;
|
|||||||
} else if(strcmp(cmd,"no_rc")==0) {
|
} else if(strcmp(cmd,"no_rc")==0) {
|
||||||
ret= Xorriso_option_no_rc(xorriso, 0);
|
ret= Xorriso_option_no_rc(xorriso, 0);
|
||||||
|
|
||||||
|
} else if(strcmp(cmd,"not_leaf")==0) {
|
||||||
|
(*idx)++;
|
||||||
|
ret= Xorriso_option_not_leaf(xorriso, arg1, 0);
|
||||||
|
|
||||||
|
} else if(strcmp(cmd,"not_mgt")==0) {
|
||||||
|
(*idx)++;
|
||||||
|
ret= Xorriso_option_not_mgt(xorriso, arg1, 0);
|
||||||
|
|
||||||
} else if(strcmp(cmd,"not_paths")==0) {
|
} else if(strcmp(cmd,"not_paths")==0) {
|
||||||
ret= Xorriso_option_not_paths(xorriso, argc, argv, idx, 0);
|
ret= Xorriso_option_not_paths(xorriso, argc, argv, idx, 0);
|
||||||
|
|
||||||
@ -10994,9 +11093,6 @@ next_command:;
|
|||||||
(*idx)++;
|
(*idx)++;
|
||||||
ret= Xorriso_option_reassure(xorriso, arg1, 0);
|
ret= Xorriso_option_reassure(xorriso, arg1, 0);
|
||||||
|
|
||||||
} else if(strcmp(cmd,"revoke_exclusions")==0) {
|
|
||||||
ret= Xorriso_option_revoke_exclusions(xorriso, 0);
|
|
||||||
|
|
||||||
} else if(strcmp(cmd,"report_about")==0) {
|
} else if(strcmp(cmd,"report_about")==0) {
|
||||||
(*idx)++;
|
(*idx)++;
|
||||||
ret= Xorriso_option_report_about(xorriso, arg1, 0);
|
ret= Xorriso_option_report_about(xorriso, arg1, 0);
|
||||||
|
@ -167,6 +167,10 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
int temp_mem_limit;
|
int temp_mem_limit;
|
||||||
|
|
||||||
struct ExclusionS *disk_exclusions;
|
struct ExclusionS *disk_exclusions;
|
||||||
|
int disk_excl_mode; /* bit0= on (else off)
|
||||||
|
bit1= parameter too (else rekursion only)
|
||||||
|
>>> bit2= whole subtree banned (else only exact path)
|
||||||
|
*/
|
||||||
|
|
||||||
int use_stdin; /* use raw stdin even if readline support is compiled */
|
int use_stdin; /* use raw stdin even if readline support is compiled */
|
||||||
int result_page_length;
|
int result_page_length;
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2008.05.02.204942"
|
#define Xorriso_timestamP "2008.05.03.151106"
|
||||||
|
@ -1639,7 +1639,7 @@ cannot_open_dir:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* compare exclusions against disk_path resp. name */
|
/* compare exclusions against disk_path resp. name */
|
||||||
ret= Xorriso_path_is_excluded(xorriso, disk_path, 0);
|
ret= Xorriso_path_is_excluded(xorriso, disk_path, 0); /* (is never param) */
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
{ret= -1; goto ex;}
|
{ret= -1; goto ex;}
|
||||||
if(ret>0)
|
if(ret>0)
|
||||||
@ -1888,9 +1888,11 @@ int Xorriso_copy_properties(struct XorrisO *xorriso,
|
|||||||
Set to NULL if calling this function from outside ISO world
|
Set to NULL if calling this function from outside ISO world
|
||||||
@param flag bit0= mkdir: graft in as empty directory, not as copy from disk
|
@param flag bit0= mkdir: graft in as empty directory, not as copy from disk
|
||||||
bit1= do not report added files
|
bit1= do not report added files
|
||||||
bit2= -follow: this is not a command parameter
|
bit2= -follow, -not_*: this is not a command parameter
|
||||||
bit3= use offset and cut_size for cut_out_node
|
bit3= use offset and cut_size for cut_out_node
|
||||||
@return <=0 = error , 1 = added simple node , 2 = added directory
|
bit4= return 3 on rejection by exclusion or user
|
||||||
|
@return <=0 = error , 1 = added simple node , 2 = added directory ,
|
||||||
|
3 = rejected
|
||||||
*/
|
*/
|
||||||
int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
||||||
char *disk_path, char *img_path,
|
char *disk_path, char *img_path,
|
||||||
@ -1905,12 +1907,11 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
|||||||
int target_is_split;
|
int target_is_split;
|
||||||
struct stat stbuf;
|
struct stat stbuf;
|
||||||
|
|
||||||
|
ret= Xorriso_path_is_excluded(xorriso, disk_path, !(flag&4));
|
||||||
/* compare exclusions against disk_path resp. name */
|
if(ret<0)
|
||||||
/* >>> ??? why not !(flag&4) ? : "but no leaf patter if flag&4 */;
|
|
||||||
ret= Xorriso_path_is_excluded(xorriso, disk_path, 0);
|
|
||||||
if(ret!=0)
|
|
||||||
return(ret);
|
return(ret);
|
||||||
|
if(ret>0)
|
||||||
|
return(3*!!(flag&16));
|
||||||
|
|
||||||
for(cpt= img_path; 1; cpt++) {
|
for(cpt= img_path; 1; cpt++) {
|
||||||
cpt= strstr(cpt,"/.");
|
cpt= strstr(cpt,"/.");
|
||||||
@ -2026,7 +2027,7 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
|||||||
sprintf(xorriso->info_text, "User revoked adding of: %s",
|
sprintf(xorriso->info_text, "User revoked adding of: %s",
|
||||||
Text_shellsafe(disk_path, sfe, 0));
|
Text_shellsafe(disk_path, sfe, 0));
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
return(0);
|
return(3*!!(flag&16));
|
||||||
}
|
}
|
||||||
node= NULL;
|
node= NULL;
|
||||||
goto handle_path_node;
|
goto handle_path_node;
|
||||||
|
Loading…
Reference in New Issue
Block a user