1 /*****************************************************************************
2 Major portions of this software are copyrighted by the Medical College
3 of Wisconsin, 1994-2000, and are released under the Gnu General Public
4 License, Version 2. See the file README.Copyright for details.
5 ******************************************************************************/
6
7 #include "mrilib.h"
8 #include "thd.h"
9
10 /*----------------------------------------------------------------------
11 given a directory name, create datablocks from all entries possible.
12 return an array of datablock arrays
13 ------------------------------------------------------------------------*/
14
THD_init_alldir_datablocks(char * dirname)15 RwcPointer_array * THD_init_alldir_datablocks( char * dirname )
16 {
17 RwcPointer_array * super_array ;
18 THD_datablock_array * dblk_arr ;
19 THD_string_array * flist , * rlist ;
20 char prefix[THD_MAX_NAME] ;
21 char * fname ;
22 int ifile ;
23
24 /* initialize answer */
25
26 INIT_XTARR( super_array ) ;
27
28 /* get list of all regular files in the directory */
29
30 flist = THD_get_all_filenames( dirname ) ;
31 if( flist == NULL || flist->num <= 0 ){
32 DESTROY_SARR(flist) ;
33 return super_array ;
34 }
35
36 rlist = THD_extract_regular_files( flist ) ;
37 DESTROY_SARR(flist) ;
38 if( rlist == NULL || rlist->num <= 0 ){
39 DESTROY_SARR(rlist) ;
40 return super_array ;
41 }
42
43 /* for each header/prefix combination
44 in the list, try to get all datablocks within */
45
46 for( ifile=0 ; ifile < rlist->num ; ifile++ ){
47
48 fname = rlist->ar[ifile] ;
49 if( fname == NULL ||
50 strstr(fname,DATASET_HEADER_SUFFIX) == NULL ) continue ;
51
52 FILENAME_TO_PREFIX(fname,prefix) ;
53 if( strlen(prefix) == 0 ) continue ;
54
55 dblk_arr = THD_init_prefix_datablocks( prefix , rlist ) ;
56
57 if( dblk_arr != NULL && dblk_arr->num > 0 ){
58 ADDTO_XTARR(super_array,dblk_arr) ; /* store in output */
59 } else {
60 FREE_DBARR(dblk_arr) ; /* throw it away */
61 }
62
63 }
64
65 /* done! */
66
67 DESTROY_SARR(rlist) ;
68 return super_array ;
69 }
70