New -find pseudo tests -use_pattern , -or_use_pattern

This commit is contained in:
2014-04-16 14:42:40 +00:00
parent a73032dd9b
commit f5d7552c22
8 changed files with 177 additions and 60 deletions

View File

@ -720,6 +720,7 @@ int Xorriso_option_find(struct XorrisO *xorriso, int argc, char **argv,
if(!(flag&2))
xorriso->find_compare_result= 1;
for(i= *idx+1; i<end_idx; i++) {
ret= 1;
if(strcmp(argv[i], "-name")==0) {
if(i+1>=end_idx) {
not_enough_arguments:;
@ -863,41 +864,86 @@ not_enough_arguments:;
}
} else if(strcmp(argv[i], "-true") == 0) {
ret= Findjob_set_false(job, -1, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-false") == 0) {
ret= Findjob_set_false(job, 1, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-decision") == 0) {
if(i+1>=end_idx)
goto not_enough_arguments;
i++;
ret= Findjob_set_decision(job, argv[i], 0);
ret= Findjob_set_arg1(job, 11, argv[i], 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-prune") == 0) {
ret= Findjob_set_prune(job, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-sub") == 0 || strcmp(argv[i], "(") == 0) {
ret= Findjob_open_bracket(job, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-subend") == 0 || strcmp(argv[i], ")") == 0) {
ret= Findjob_close_bracket(job, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-not") == 0 || strcmp(argv[i], "!") == 0) {
ret= Findjob_not(job, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-and") == 0 || strcmp(argv[i], "-a") == 0) {
ret= Findjob_and(job, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-or") == 0 || strcmp(argv[i], "-o") == 0) {
ret= Findjob_or(job, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-if") == 0) {
ret= Findjob_if(job, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-then") == 0) {
ret= Findjob_then(job, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-else") == 0) {
ret= Findjob_else(job, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-elseif") == 0) {
ret= Findjob_elseif(job, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-endif") == 0) {
ret= Findjob_endif(job, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-sort_lba") == 0) {
flag|= 8;
/* If an operator is open: insert a -true test, else do nothing */
ret= Findjob_set_false(job, -1, 1);
if(ret == 2)
ret= 1;
} else if(strcmp(argv[i], "-use_pattern") == 0 ||
strcmp(argv[i], "-or_use_pattern") == 0) {
if(i + 1 >= end_idx)
goto not_enough_arguments;
i++;
ret= Findjob_set_arg1(job,
22 + (strcmp(argv[i], "-or_use_pattern") == 0),
argv[i], 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-or_use_pattern") == 0) {
if(i + 1 >= end_idx)
goto not_enough_arguments;
i++;
ret= Findjob_set_arg1(job, 23, argv[i], 1);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-exec")==0) {
if(i+1>=end_idx) {
not_enough_exec_arguments:;