Structured patterns for options -ls and -ls_l

This commit is contained in:
2007-10-29 21:41:17 +00:00
parent 117d8b77d1
commit 7517ea154e
6 changed files with 378 additions and 13 deletions

View File

@ -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 */
}