Doxygen Source Code Documentation
thd_sarr.c File Reference
#include "mrilib.h"#include "thd.h"Go to the source code of this file.
Functions | |
| int | SARR_find_string (THD_string_array *sar, char *str) |
| int | SARR_find_substring (THD_string_array *sar, char *str) |
| int | SARR_lookfor_string (THD_string_array *sar, char *str, int nstart) |
| int | SARR_lookfor_substring (THD_string_array *sar, char *sub, int nstart) |
| THD_string_array * | THD_get_all_filenames (char *dirname) |
| THD_string_array * | THD_get_all_subdirs (int lev, char *dirname) |
| THD_string_array * | THD_extract_regular_files (THD_string_array *star_in) |
| THD_string_array * | THD_extract_directories (THD_string_array *star_in) |
| THD_string_array * | THD_normalize_flist (THD_string_array *star_in) |
| THD_string_array * | THD_get_wildcard_filenames (char *pat) |
Function Documentation
|
||||||||||||
|
Definition at line 19 of file thd_sarr.c. References SARR_lookfor_string().
00020 {
00021 return SARR_lookfor_string( sar , str , 0 ) ;
00022 }
|
|
||||||||||||
|
Definition at line 24 of file thd_sarr.c. References SARR_lookfor_substring().
00025 {
00026 return SARR_lookfor_substring( sar , str , 0 ) ;
00027 }
|
|
||||||||||||||||
|
Definition at line 29 of file thd_sarr.c. References THD_string_array::ar, and THD_string_array::num. Referenced by SARR_find_string(), and THD_normalize_flist().
|
|
||||||||||||||||
|
Definition at line 42 of file thd_sarr.c. References THD_string_array::ar, and THD_string_array::num. Referenced by SARR_find_substring(), and THD_init_prefix_datablocks().
|
|
|
Definition at line 236 of file thd_sarr.c. References ADDTO_SARR, THD_string_array::ar, DESTROY_SARR, INIT_SARR, THD_string_array::num, and THD_is_directory(). Referenced by THD_get_all_subdirs().
00237 {
00238 THD_string_array * star_out ;
00239 int ii ;
00240
00241 if( star_in == NULL || star_in->num <= 0 ) return NULL ;
00242
00243 INIT_SARR(star_out) ;
00244
00245 for( ii=0 ; ii < star_in->num ; ii++ ){
00246 if( THD_is_directory(star_in->ar[ii]) )
00247 ADDTO_SARR( star_out , star_in->ar[ii] ) ;
00248 }
00249
00250 if( star_out->num == 0 ) DESTROY_SARR(star_out) ;
00251 return star_out ;
00252 }
|
|
|
must want deeper levels * Definition at line 213 of file thd_sarr.c. References ADDTO_SARR, THD_string_array::ar, DESTROY_SARR, INIT_SARR, THD_string_array::num, and THD_is_file(). Referenced by NLFIT_get_all_MODELs(), PLUG_get_all_plugins(), THD_get_all_executables(), THD_get_all_timeseries(), and THD_init_alldir_datablocks().
00214 {
00215 THD_string_array * star_out ;
00216 int ii ;
00217
00218 if( star_in == NULL || star_in->num <= 0 ) return NULL ;
00219
00220 INIT_SARR(star_out) ;
00221
00222 for( ii=0 ; ii < star_in->num ; ii++ ){
00223 if( THD_is_file(star_in->ar[ii]) )
00224 ADDTO_SARR( star_out , star_in->ar[ii] ) ;
00225 }
00226
00227 if( star_out->num == 0 ) DESTROY_SARR(star_out) ;
00228 return star_out ;
00229 }
|
|
|
Definition at line 75 of file thd_sarr.c. References ADDTO_SARR, AFREALL, ENTRY, free, INIT_SARR, MCW_file_expand(), MCW_free_expand(), MCW_warn_expand(), myXtFree, RETURN, STATUS, THD_is_directory(), and XtMalloc. Referenced by NLFIT_get_all_MODELs(), PLUG_get_all_plugins(), THD_get_all_executables(), THD_get_all_subdirs(), THD_get_all_timeseries(), and THD_init_alldir_datablocks().
00076 {
00077 #ifndef DONT_USE_SCANDIR
00078 struct dirent ** dplist=NULL ;
00079 #endif
00080 int nfiles , dlen , ii , n_fname , max_fname ;
00081 THD_string_array * star ;
00082 char * total_dirname , * total_fname ;
00083 char ** gname=NULL ;
00084
00085 ENTRY("THD_get_all_filenames") ;
00086
00087 if( dirname == NULL || (dlen=strlen(dirname)) == 0 ) RETURN( NULL );
00088 if( ! THD_is_directory(dirname) ) RETURN( NULL );
00089
00090 total_dirname = (char*)XtMalloc( dlen+4 ) ;
00091 strcpy( total_dirname , dirname ) ;
00092 if( total_dirname[dlen-1] != '/' ){
00093 total_dirname[dlen] = '/' ; /* add a slash */
00094 total_dirname[++dlen] = '\0' ;
00095 }
00096
00097 #ifdef DONT_USE_SCANDIR
00098 total_dirname[dlen] = '*' ; /* add wildcard */
00099 total_dirname[++dlen] = '\0' ;
00100 MCW_warn_expand(0) ;
00101 if(PRINT_TRACING){
00102 char str[256]; sprintf(str,"MCW_file_expand(%s)",total_dirname); STATUS(str);
00103 }
00104 MCW_file_expand( 1, &total_dirname, &nfiles, &gname ) ; /* find files */
00105 #else
00106 nfiles = scandir( dirname ,
00107 &dplist ,
00108 THD_select_dirent ,
00109 alphasort ) ;
00110 #endif
00111
00112 if( nfiles < 1 ){
00113 myXtFree( total_dirname ) ;
00114 #ifdef DONT_USE_SCANDIR
00115 if( gname != NULL ) free(gname) ;
00116 #else
00117 if( dplist != NULL ) free(dplist) ;
00118 #endif
00119 RETURN( NULL );
00120 }
00121
00122 INIT_SARR( star ) ;
00123
00124 #ifndef DONT_USE_SCANDIR
00125 max_fname = dlen+64 ;
00126 total_fname = (char*)XtMalloc( max_fname ) ;
00127 #endif
00128
00129 for( ii=0 ; ii < nfiles ; ii++ ){
00130 #ifdef DONT_USE_SCANDIR
00131 ADDTO_SARR( star , gname[ii] ) ;
00132 #else
00133 n_fname = dlen + strlen( dplist[ii]->d_name ) + 4 ;
00134 if( n_fname > max_fname ){
00135 total_fname = AFREALL(total_fname, char, n_fname ) ;
00136 max_fname = n_fname ;
00137 }
00138 strcpy( total_fname , total_dirname ) ;
00139 strcat( total_fname , dplist[ii]->d_name ) ;
00140 ADDTO_SARR( star , total_fname ) ;
00141 free( dplist[ii] ) ;
00142 #endif
00143 }
00144
00145 myXtFree( total_dirname ) ;
00146 #ifdef DONT_USE_SCANDIR
00147 MCW_free_expand( nfiles , gname ) ;
00148 #else
00149 myXtFree( total_fname ) ;
00150 free( dplist ) ;
00151 #endif
00152 RETURN( star );
00153 }
|
|
||||||||||||
|
Definition at line 160 of file thd_sarr.c. References ADDTO_SARR, THD_string_array::ar, DESTROY_SARR, INIT_SARR, myXtFree, THD_string_array::num, THD_extract_directories(), THD_get_all_filenames(), and XtMalloc. Referenced by AFNI_read_inputs().
00161 {
00162 int ii , jj , dlen ;
00163 THD_string_array * star , * flist , * dlist ;
00164 char * total_dirname ;
00165
00166 if( dirname == NULL || (dlen=strlen(dirname)) == 0 ) return NULL ;
00167
00168 total_dirname = (char*)XtMalloc( dlen+2 ) ;
00169 strcpy( total_dirname , dirname ) ;
00170 if( total_dirname[dlen-1] != '/' ){
00171 total_dirname[dlen] = '/' ;
00172 total_dirname[++dlen] = '\0' ;
00173 }
00174
00175 INIT_SARR( star ) ;
00176 ADDTO_SARR( star , total_dirname ) ;
00177
00178 /** want only this level? **/
00179
00180 if( lev <= 0 ) return star ;
00181
00182 /** must want deeper levels **/
00183
00184 flist = THD_get_all_filenames( total_dirname ) ;
00185 myXtFree(total_dirname) ;
00186
00187 if( flist == NULL ) return star ;
00188 if( flist->num == 0 ){ DESTROY_SARR(flist) ; return star ; }
00189
00190 dlist = THD_extract_directories( flist ) ;
00191 DESTROY_SARR(flist) ;
00192 if( dlist == NULL ) return star ;
00193 if( dlist->num == 0 ){ DESTROY_SARR(dlist) ; return star ; }
00194
00195 for( ii=0 ; ii < dlist->num ; ii++ ){
00196 flist = THD_get_all_subdirs( lev-1 , dlist->ar[ii] ) ;
00197 if( flist == NULL ) continue ;
00198 for( jj=0 ; jj < flist->num ; jj++ ){
00199 ADDTO_SARR( star , flist->ar[jj] ) ;
00200 }
00201 DESTROY_SARR(flist) ;
00202 }
00203
00204 DESTROY_SARR(dlist) ;
00205 return star ;
00206 }
|
|
|
Definition at line 321 of file thd_sarr.c. References ADDTO_SARR, free, INIT_SARR, MCW_file_expand(), MCW_free_expand(), MCW_warn_expand(), and pat. Referenced by THD_get_all_timeseries().
00322 {
00323 int nfiles , ii ;
00324 THD_string_array * star ;
00325 char ** gname=NULL ;
00326
00327 if( pat == NULL || strlen(pat) == 0 ) return NULL ;
00328
00329 MCW_warn_expand(0) ;
00330 MCW_file_expand( 1, &pat, &nfiles, &gname ) ; /* find files */
00331
00332 if( nfiles < 1 ){
00333 if( gname != NULL ) free(gname) ;
00334 return NULL ;
00335 }
00336
00337 INIT_SARR( star ) ;
00338
00339 for( ii=0 ; ii < nfiles ; ii++ ){
00340 ADDTO_SARR( star , gname[ii] ) ;
00341 }
00342
00343 MCW_free_expand( nfiles , gname ) ;
00344 return star ;
00345 }
|
|
|
Definition at line 260 of file thd_sarr.c. References ADDTO_SARR, AFNI_yesenv(), THD_string_array::ar, DESTROY_SARR, INIT_SARR, THD_string_array::num, REMOVEFROM_SARR, SARR_lookfor_string(), and THD_equiv_files(). Referenced by AFNI_read_inputs().
00261 {
00262 THD_string_array * star_out , * star_qqq ;
00263 static char rpath[2048] ;
00264 char * rp ;
00265 int ii , jj , nleft , skip_realpath=0 ;
00266
00267 if( star_in == NULL || star_in->num <= 0 ) return NULL ;
00268
00269 skip_realpath = AFNI_yesenv("AFNI_NOREALPATH") ;
00270
00271 INIT_SARR(star_out) ;
00272
00273 for( ii=0 ; ii < star_in->num ; ii++ ){
00274 if( skip_realpath ) rp = star_in->ar[ii] ;
00275 else rp = realpath( star_in->ar[ii] , rpath ) ;
00276
00277 if( rp != NULL ) ADDTO_SARR( star_out , rp ) ;
00278 }
00279
00280 if( star_out->num == 0 ){ DESTROY_SARR(star_out) ; return NULL ; }
00281
00282 nleft = 0 ;
00283 for( ii=0 ; ii < star_out->num ; ii++ ){
00284 rp = star_out->ar[ii] ;
00285 if( rp != NULL ){
00286 nleft++ ; jj = ii ;
00287 while( jj >= 0 ){
00288 jj = SARR_lookfor_string( star_out , rp , jj+1 ) ;
00289 if( jj >= 0 ) REMOVEFROM_SARR(star_out,jj) ;
00290 }
00291
00292 for( jj=ii+1 ; jj < star_out->num ; jj++ ){
00293 if( THD_equiv_files(rp,star_out->ar[jj]) )
00294 REMOVEFROM_SARR(star_out,jj) ;
00295 }
00296 }
00297 }
00298
00299 if( nleft == 0 ){ DESTROY_SARR(star_out) ; return NULL ; }
00300
00301 if( nleft == star_out->num ) return star_out ;
00302
00303 INIT_SARR(star_qqq) ;
00304 for( ii=0 ; ii < star_out->num ; ii++ ){
00305 rp = star_out->ar[ii] ;
00306 if( rp != NULL ) ADDTO_SARR(star_qqq,rp) ;
00307 }
00308
00309 #if 0
00310 fprintf(stderr,"\nTHD_normalize_flist: in=%d out=%d qqq=%d\n",
00311 star_in->num , star_out->num , star_qqq->num ) ;
00312 #endif
00313
00314 DESTROY_SARR(star_out) ; return star_qqq ;
00315 }
|