Structured patterns for options -ls and -ls_l
This commit is contained in:
@ -1785,6 +1785,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
||||
m->dialog= 0;
|
||||
m->search_mode= 0;
|
||||
m->structured_search= 1;
|
||||
m->temp_mem_limit= 16*1024.0*1024.0;
|
||||
m->use_stdin= 0;
|
||||
m->result_page_length= 0;
|
||||
m->result_page_width= 80;
|
||||
@ -2335,10 +2336,12 @@ int Xorriso__bourne_to_reg(char bourne_expr[], char reg_expr[], int flag)
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_prepare_regex(struct XorrisO *xorriso, char *adr, int flag)
|
||||
/*
|
||||
bit0= do not augment relative structured search by xorriso->wd
|
||||
/* @param flag bit0= do not augment relative structured search by xorriso->wdi
|
||||
bit1= return 2 if bonked at root
|
||||
(caller then aborts or retries without bit0)
|
||||
@return <=0 error, 1= ok , 2
|
||||
*/
|
||||
int Xorriso_prepare_regex(struct XorrisO *xorriso, char *adr, int flag)
|
||||
{
|
||||
int l,ret,i,count,bonked= 0,is_constant;
|
||||
char *cpt,*npt,adr_part[2*SfileadrL],absolute_adr[2*SfileadrL],*adr_start;
|
||||
@ -2477,6 +2480,8 @@ next_adr_part:;
|
||||
cpt++;
|
||||
}
|
||||
if(bonked) {
|
||||
if(flag&2)
|
||||
return(2);
|
||||
sprintf(xorriso->info_text, "Your '..' bonked at the root directory.");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING",0);
|
||||
}
|
||||
@ -4022,13 +4027,30 @@ int Xorriso_option_lsi(struct XorrisO *xorriso, char *pattern, int flag)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/*
|
||||
if(strcmp(pattern,"*")!=0 && pattern[0])
|
||||
fprintf(stderr, ">>> XORRISO : TODO : filter by pattern %s\n", pattern);
|
||||
*/
|
||||
#define Xorriso_lsi_structured_patterN 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,
|
||||
@ -4036,8 +4058,12 @@ int Xorriso_option_lsi(struct XorrisO *xorriso, char *pattern, int flag)
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
return(0);
|
||||
}
|
||||
|
||||
ret= Xorriso_ls(xorriso, flag&1);
|
||||
return(ret);
|
||||
|
||||
#endif /* ! Xorriso_lsi_structured_patterN */
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user