Multiple structured patterns, changed option -ls from single to multi args
This commit is contained in:
116
test/xorriso.c
116
test/xorriso.c
@ -1397,6 +1397,7 @@ int Fileliste__escape_target(char *target, int flag)
|
||||
#endif /* ! Xorriso_fileliste_externaL */
|
||||
|
||||
|
||||
#define Xorriso_cleanup_externaL 1
|
||||
#ifndef Xorriso_cleanup_externaL
|
||||
|
||||
/* <<< ??? ts A71006 : will this be replaced by the libburn signal handler ? */
|
||||
@ -1427,9 +1428,9 @@ static int signal_list_count= 24;
|
||||
|
||||
/* Signals not to be caught */
|
||||
static int non_signal_list[]= {
|
||||
SIGKILL, SIGCHLD, SIGSTOP, SIGURG, -1
|
||||
SIGKILL, SIGCHLD, SIGSTOP, SIGURG, SIGWINCH, -1
|
||||
};
|
||||
static int non_signal_list_count= 4;
|
||||
static int non_signal_list_count= 5;
|
||||
|
||||
|
||||
/* run time dynamic part */
|
||||
@ -1484,7 +1485,8 @@ static void Cleanup_handler_generic(int signum)
|
||||
}
|
||||
|
||||
|
||||
int Cleanup_set_handlers(void *handle, Cleanup_app_handler_T handler, int flag)
|
||||
static int Cleanup_set_handlers(void *handle,
|
||||
Cleanup_app_handler_T handler, int flag)
|
||||
/*
|
||||
bit0= set to default handlers
|
||||
bit1= set to ignore
|
||||
@ -2060,23 +2062,15 @@ klammer_affe:;
|
||||
return(3);
|
||||
}
|
||||
|
||||
} else if(*cpt=='-' && !(flag&1)) {
|
||||
Xorriso_dialog_input(xorriso,cpt,strlen(line)+1,2); /* write to history */
|
||||
strcpy(xorriso->pending_option,cpt);
|
||||
xorriso->request_to_abort= 1;
|
||||
sprintf(xorriso->info_text,
|
||||
"------------ [-* = input of option registered. Operation ends ] -------------\n");
|
||||
Xorriso_info(xorriso,0);
|
||||
return(2);
|
||||
|
||||
} else if(*cpt!=0 && !(flag&1)) {
|
||||
Xorriso_dialog_input(xorriso,cpt,strlen(line)+1,2); /* write to history */
|
||||
strcpy(xorriso->pending_option,cpt);
|
||||
xorriso->request_to_abort= 1;
|
||||
sprintf(xorriso->info_text,
|
||||
"------------ [ input of searchtext registered. Operation ends ] -------------\n");
|
||||
"-------------- [ Input of option registered. Operation ends ] ---------------\n");
|
||||
Xorriso_info(xorriso,0);
|
||||
return(2);
|
||||
|
||||
} else if(*cpt!=0) {
|
||||
Xorriso_dialog_input(xorriso,cpt,strlen(line)+1,2); /* write to history */
|
||||
sprintf(xorriso->info_text,
|
||||
@ -2978,6 +2972,8 @@ int Xorriso_warn_of_wildcards(struct XorrisO *xorriso, char *path, int flag)
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= do not warn of wirldcards
|
||||
*/
|
||||
int Xorriso_end_idx(struct XorrisO *xorriso,
|
||||
int argc, char **argv, int idx, int flag)
|
||||
{
|
||||
@ -2986,7 +2982,7 @@ int Xorriso_end_idx(struct XorrisO *xorriso,
|
||||
for(i= idx; i<argc; i++) {
|
||||
if(strcmp(argv[i], "--")==0)
|
||||
break;
|
||||
if(!warned)
|
||||
if(!((flag&1) || warned))
|
||||
warned= Xorriso_warn_of_wildcards(xorriso, argv[i], 0);
|
||||
}
|
||||
return(i);
|
||||
@ -4022,48 +4018,63 @@ int Xorriso_option_j_capital(struct XorrisO *xorriso, int flag)
|
||||
|
||||
|
||||
/* Options -ls alias -lsi and ls_l alias ls_li */
|
||||
/* @param flag bit0= long format (-ls_l) */
|
||||
int Xorriso_option_lsi(struct XorrisO *xorriso, char *pattern, int flag)
|
||||
/* @param flag bit0= long format (-ls_l)
|
||||
bit1= do not expand patterns but use literally
|
||||
*/
|
||||
int Xorriso_option_lsi(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag)
|
||||
{
|
||||
int ret;
|
||||
int ret, end_idx, filec= 0, nump, i;
|
||||
char **filev= NULL, **patterns= NULL;
|
||||
|
||||
#define Xorriso_lsi_structured_patterN 1
|
||||
end_idx= Xorriso_end_idx(xorriso, argc, argv, *idx, 1);
|
||||
|
||||
#ifdef Xorriso_lsi_structured_patterN
|
||||
|
||||
char **filev= NULL, *eff_pattern;
|
||||
int filec= 0;
|
||||
|
||||
eff_pattern= pattern;
|
||||
if(pattern[0]==0)
|
||||
eff_pattern= "*";
|
||||
ret= Xorriso_expand_pattern(xorriso, eff_pattern, &filec, &filev, 0);
|
||||
if(ret<=0)
|
||||
return(0);
|
||||
ret= Xorriso_ls_filev(xorriso, filec, filev, flag&1);
|
||||
Sfile_destroy_argv(&filec, &filev, 0);
|
||||
if(ret<=0)
|
||||
return(0);
|
||||
return(1);
|
||||
|
||||
#else /* Xorriso_lsi_structured_patterN */
|
||||
|
||||
xorriso->search_mode= 4;
|
||||
xorriso->structured_search= 0;
|
||||
|
||||
ret= Xorriso_prepare_regex(xorriso, pattern, 0);
|
||||
if(ret<=0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"Cannot compile pattern to regular expression: %s", pattern);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
return(0);
|
||||
nump= end_idx - *idx;
|
||||
if(flag&2) {
|
||||
if(nump <= 0)
|
||||
return(0);
|
||||
} else if(nump <= 0) {
|
||||
patterns= calloc(sizeof(char *), 1);
|
||||
if(patterns == NULL) {
|
||||
no_memory:;
|
||||
sprintf(xorriso->info_text,
|
||||
"Cannot allocate enough memory for pattern expansion");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||
{ret= -1; goto ex;}
|
||||
}
|
||||
nump= 1;
|
||||
patterns[0]= "*";
|
||||
} else {
|
||||
patterns= calloc(sizeof(char *), nump);
|
||||
if(patterns==NULL)
|
||||
goto no_memory;
|
||||
for(i= 0; i<nump; i++) {
|
||||
if(argv[i + *idx][0]==0)
|
||||
patterns[i]= "*";
|
||||
else
|
||||
patterns[i]= argv[i + *idx];
|
||||
}
|
||||
}
|
||||
if(flag&2) {
|
||||
ret= Xorriso_ls_filev(xorriso, nump, argv + (*idx), flag&1);
|
||||
if(ret<=0)
|
||||
{ret= 0; goto ex;}
|
||||
} else {
|
||||
ret= Xorriso_expand_pattern(xorriso, nump, patterns, &filec, &filev, 0);
|
||||
if(ret<=0)
|
||||
{ret= 0; goto ex;}
|
||||
ret= Xorriso_ls_filev(xorriso, filec, filev, flag&1);
|
||||
if(ret<=0)
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
|
||||
ret= Xorriso_ls(xorriso, flag&1);
|
||||
ret= 1;
|
||||
ex:;
|
||||
if(patterns!=NULL)
|
||||
free((char *) patterns);
|
||||
Sfile_destroy_argv(&filec, &filev, 0);
|
||||
(*idx)= end_idx;
|
||||
return(ret);
|
||||
|
||||
#endif /* ! Xorriso_lsi_structured_patterN */
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -4956,8 +4967,7 @@ next_command:;
|
||||
} else if(strcmp(cmd,"-ls")==0 || strcmp(cmd,"-lsi")==0 ||
|
||||
strcmp(cmd,"-ls_l")==0 || strcmp(cmd,"-ls_li")==0 ||
|
||||
strcmp(cmd,"-ls-l")==0 || strcmp(cmd,"-ls-li")==0) {
|
||||
(*idx)++;
|
||||
ret= Xorriso_option_lsi(xorriso, arg1, strlen(cmd)>4);
|
||||
ret= Xorriso_option_lsi(xorriso, argc, argv, idx, strlen(cmd)>4);
|
||||
|
||||
} else if(strcmp(cmd,"-lsx")==0 || strcmp(cmd,"-ls_lx")==0
|
||||
|| strcmp(cmd,"-ls-lx")==0) {
|
||||
@ -5002,6 +5012,8 @@ next_command:;
|
||||
sscanf(arg2,"%d",&num2);
|
||||
if(num1<0)
|
||||
num1= 0;
|
||||
if(arg1[0]==0)
|
||||
num1= 16;
|
||||
if(num2<=0)
|
||||
num2= 80;
|
||||
ret= Xorriso_option_page(xorriso, num1, num2, 0);
|
||||
|
Reference in New Issue
Block a user