|
|
|
@ -1,7 +1,7 @@
|
|
|
|
|
|
|
|
|
|
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
|
|
|
|
|
|
|
|
|
|
Copyright 2007-2013 Thomas Schmitt, <scdbackup@gmx.net> |
|
|
|
|
Copyright 2007-2014 Thomas Schmitt, <scdbackup@gmx.net> |
|
|
|
|
|
|
|
|
|
Provided under GPL version 2 or later. |
|
|
|
|
|
|
|
|
@ -2784,6 +2784,7 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* flag bit0= perform -disk_path rather than -disk_name
|
|
|
|
|
bit0= use_pattern |
|
|
|
|
*/ |
|
|
|
|
int Exprtest_match_disk_name(struct XorrisO *xorriso, struct ExprtesT *ftest, |
|
|
|
|
IsoNode *node, int flag) |
|
|
|
@ -2792,6 +2793,7 @@ int Exprtest_match_disk_name(struct XorrisO *xorriso, struct ExprtesT *ftest,
|
|
|
|
|
int ret; |
|
|
|
|
char *disk_path= NULL, *npt; |
|
|
|
|
regmatch_t name_match; |
|
|
|
|
char *arg1; |
|
|
|
|
void *arg2; |
|
|
|
|
|
|
|
|
|
Xorriso_alloc_meM(disk_path, char, SfileadrL); |
|
|
|
@ -2804,13 +2806,18 @@ int Exprtest_match_disk_name(struct XorrisO *xorriso, struct ExprtesT *ftest,
|
|
|
|
|
{ret= 1; goto ex;} |
|
|
|
|
{ret= 0; goto ex;} |
|
|
|
|
} |
|
|
|
|
arg1= (char *) ftest->arg1; |
|
|
|
|
arg2= ftest->arg2; |
|
|
|
|
npt= strrchr(disk_path, '/'); |
|
|
|
|
if(npt != NULL) |
|
|
|
|
npt++; |
|
|
|
|
else |
|
|
|
|
npt= disk_path; |
|
|
|
|
ret= ! regexec(arg2, npt, 1, &name_match, 0); |
|
|
|
|
if(flag & 2) { |
|
|
|
|
ret= ! regexec(arg2, npt, 1, &name_match, 0); |
|
|
|
|
} else { |
|
|
|
|
ret= (strcmp(arg1, npt) == 0); |
|
|
|
|
} |
|
|
|
|
ex:; |
|
|
|
|
Xorriso_free_meM(disk_path); |
|
|
|
|
return(ret); |
|
|
|
@ -2859,8 +2866,12 @@ return:
|
|
|
|
|
value= 0; |
|
|
|
|
|
|
|
|
|
break; case 1: /* -name *arg1 (regex in *arg2) */ |
|
|
|
|
ret= regexec(arg2, name, 1, &name_match, 0); |
|
|
|
|
value= !ret; |
|
|
|
|
if (ftest->boss->use_pattern) { |
|
|
|
|
ret= regexec(arg2, name, 1, &name_match, 0); |
|
|
|
|
value= !ret; |
|
|
|
|
} else { |
|
|
|
|
value= (strcmp((char *) arg1, name) == 0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
break; case 2: /* -type *arg1 */ |
|
|
|
|
value= 1; |
|
|
|
@ -2997,15 +3008,20 @@ return:
|
|
|
|
|
ftest->boss->prune= 1; |
|
|
|
|
|
|
|
|
|
break; case 13: /* -wholename *arg1 (regex in *arg2) */ |
|
|
|
|
ret= regexec(arg2, path, 1, &name_match, 0); |
|
|
|
|
value= !ret; |
|
|
|
|
if (ftest->boss->use_pattern) { |
|
|
|
|
ret= regexec(arg2, path, 1, &name_match, 0); |
|
|
|
|
value= !ret; |
|
|
|
|
} else { |
|
|
|
|
value= (strcmp(arg1, path) == 0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
break; case 15: /* -has_md5 */ |
|
|
|
|
ret= Xorriso_get_md5(xorriso, node, path, md5, 1); |
|
|
|
|
value= (ret > 0); |
|
|
|
|
|
|
|
|
|
break; case 16: /* -disk_name *arg1 (regex in *arg2) */ |
|
|
|
|
value= !! Exprtest_match_disk_name(xorriso, ftest, node, 0); |
|
|
|
|
value= !! Exprtest_match_disk_name(xorriso, ftest, node, |
|
|
|
|
2 * (ftest->boss->use_pattern)); |
|
|
|
|
|
|
|
|
|
break; case 17: /* -hidden int *arg1 */ |
|
|
|
|
value= 1; |
|
|
|
@ -3045,7 +3061,8 @@ return:
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
break; case 20: /* -disk_path */ |
|
|
|
|
value= !! Exprtest_match_disk_name(xorriso, ftest, node, 1); |
|
|
|
|
value= !! Exprtest_match_disk_name(xorriso, ftest, node, |
|
|
|
|
1 | 2 * (ftest->boss->use_pattern)); |
|
|
|
|
|
|
|
|
|
break; case 21: /* -bad_outname */ |
|
|
|
|
ret= Xorriso_test_outchar(xorriso, node, *((int *) arg1), 0); |
|
|
|
@ -3055,6 +3072,14 @@ return:
|
|
|
|
|
} |
|
|
|
|
value= !ret; /* Xorriso_test_outchar() returns 1 for good and 0 for bad */ |
|
|
|
|
|
|
|
|
|
break; case 22: /* -use_pattern */ |
|
|
|
|
ftest->boss->use_pattern= (strcmp(arg1, "off") != 0); |
|
|
|
|
value= 1; |
|
|
|
|
|
|
|
|
|
break; case 23: /* -or_use_pattern */ |
|
|
|
|
ftest->boss->use_pattern= (strcmp(arg1, "off") != 0); |
|
|
|
|
value= 0; |
|
|
|
|
|
|
|
|
|
break; default: |
|
|
|
|
|
|
|
|
|
/* >>> complain about unknown test type */; |
|
|
|
|