|
|
|
@ -3630,7 +3630,8 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
|
|
|
|
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
|
|
|
|
|
|
|
|
|
is_default= (xorriso->do_follow_pattern && (!xorriso->do_follow_param)
|
|
|
|
|
&& xorriso->do_follow_mount && !xorriso->do_follow_links);
|
|
|
|
|
&& xorriso->do_follow_mount && (!xorriso->do_follow_links)
|
|
|
|
|
&& xorriso->follow_link_limit==100);
|
|
|
|
|
mode[0]= 0;
|
|
|
|
|
if(xorriso->do_follow_pattern)
|
|
|
|
|
strcat(mode,":pattern");
|
|
|
|
@ -3642,6 +3643,7 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
|
|
|
|
strcat(mode,":mount");
|
|
|
|
|
if(mode[0]==0)
|
|
|
|
|
strcpy(mode, ":off");
|
|
|
|
|
sprintf(mode+strlen(mode), ":limit=%d", xorriso->follow_link_limit);
|
|
|
|
|
sprintf(line,"-follow %s\n", mode+1);
|
|
|
|
|
if(!(is_default && no_defaults))
|
|
|
|
|
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
|
|
|
@ -5865,6 +5867,7 @@ int Xorriso_option_iso_rr_pattern(struct XorrisO *xorriso, char *mode,int flag)
|
|
|
|
|
int Xorriso_option_follow(struct XorrisO *xorriso, char *mode, int flag)
|
|
|
|
|
{
|
|
|
|
|
int was_fl, was_fm, was_fpr, was_fpt, l;
|
|
|
|
|
double num;
|
|
|
|
|
char *cpt, *npt;
|
|
|
|
|
|
|
|
|
|
was_fpt= xorriso->do_follow_pattern;
|
|
|
|
@ -5899,6 +5902,7 @@ int Xorriso_option_follow(struct XorrisO *xorriso, char *mode, int flag)
|
|
|
|
|
xorriso->do_follow_param= 0;
|
|
|
|
|
xorriso->do_follow_links= 0;
|
|
|
|
|
xorriso->do_follow_mount= 1;
|
|
|
|
|
xorriso->follow_link_limit= 100;
|
|
|
|
|
} else if(strncmp(cpt, "link", l)==0 || strncmp(cpt,"links", l)==0) {
|
|
|
|
|
xorriso->do_follow_links= 1;
|
|
|
|
|
} else if(strncmp(cpt, "mount", l)==0) {
|
|
|
|
@ -5907,12 +5911,21 @@ int Xorriso_option_follow(struct XorrisO *xorriso, char *mode, int flag)
|
|
|
|
|
xorriso->do_follow_param= 1;
|
|
|
|
|
} else if(strncmp(cpt, "pattern", l)==0) {
|
|
|
|
|
xorriso->do_follow_pattern= 1;
|
|
|
|
|
} else if(strncmp(cpt, "limit=", 6)==0) {
|
|
|
|
|
sscanf(cpt+6, "%lf", &num);
|
|
|
|
|
if(num<=0 || num>1.0e6) {
|
|
|
|
|
sprintf(xorriso->info_text, "-follow: Value too %s with '%s'",
|
|
|
|
|
num<=0 ? "small" : "large", cpt+6);
|
|
|
|
|
goto sorry_ex;
|
|
|
|
|
}
|
|
|
|
|
xorriso->follow_link_limit= num;
|
|
|
|
|
} else {
|
|
|
|
|
unknown_mode:;
|
|
|
|
|
if(l<SfileadrL)
|
|
|
|
|
sprintf(xorriso->info_text, "-follow: unknown mode '%s'", cpt);
|
|
|
|
|
else
|
|
|
|
|
sprintf(xorriso->info_text, "-follow: oversized mode parameter (%d)",l);
|
|
|
|
|
sorry_ex:
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
|
|
|
|
xorriso->do_follow_pattern= was_fpt;
|
|
|
|
|
xorriso->do_follow_param= was_fpr;
|
|
|
|
@ -6084,7 +6097,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
|
|
|
|
" Delete empty directories.",
|
|
|
|
|
" -- Mark end of particular action argument list.",
|
|
|
|
|
"",
|
|
|
|
|
" -follow \"on\"|\"pattern:param:link:mount\"|\"default\"|\"off\"",
|
|
|
|
|
" -follow \"on\"|\"pattern:param:link:mount:limit=#\"|\"default\"|\"off\"",
|
|
|
|
|
" Follow symbolic links and mount points within disk_path.",
|
|
|
|
|
"",
|
|
|
|
|
" -overwrite \"on\"|\"nondir\"|\"off\"",
|
|
|
|
|