Doxygen Source Code Documentation
thd_initalldir.c File Reference
#include "mrilib.h"#include "thd.h"Go to the source code of this file.
Functions | |
| XtPointer_array * | THD_init_alldir_datablocks (char *dirname) |
Function Documentation
|
|
Definition at line 15 of file thd_initalldir.c. References ADDTO_XTARR, THD_string_array::ar, DATASET_HEADER_SUFFIX, DESTROY_SARR, FILENAME_TO_PREFIX, FREE_DBARR, INIT_XTARR, THD_datablock_array::num, THD_string_array::num, THD_extract_regular_files(), THD_get_all_filenames(), THD_init_prefix_datablocks(), and THD_MAX_NAME. Referenced by THD_init_session().
00016 {
00017 XtPointer_array * super_array ;
00018 THD_datablock_array * dblk_arr ;
00019 THD_string_array * flist , * rlist ;
00020 char prefix[THD_MAX_NAME] ;
00021 char * fname ;
00022 int ifile ;
00023
00024 /* initialize answer */
00025
00026 INIT_XTARR( super_array ) ;
00027
00028 /* get list of all regular files in the directory */
00029
00030 flist = THD_get_all_filenames( dirname ) ;
00031 if( flist == NULL || flist->num <= 0 ){
00032 DESTROY_SARR(flist) ;
00033 return super_array ;
00034 }
00035
00036 rlist = THD_extract_regular_files( flist ) ;
00037 DESTROY_SARR(flist) ;
00038 if( rlist == NULL || rlist->num <= 0 ){
00039 DESTROY_SARR(rlist) ;
00040 return super_array ;
00041 }
00042
00043 /* for each header/prefix combination
00044 in the list, try to get all datablocks within */
00045
00046 for( ifile=0 ; ifile < rlist->num ; ifile++ ){
00047
00048 fname = rlist->ar[ifile] ;
00049 if( fname == NULL ||
00050 strstr(fname,DATASET_HEADER_SUFFIX) == NULL ) continue ;
00051
00052 FILENAME_TO_PREFIX(fname,prefix) ;
00053 if( strlen(prefix) == 0 ) continue ;
00054
00055 dblk_arr = THD_init_prefix_datablocks( prefix , rlist ) ;
00056
00057 if( dblk_arr != NULL && dblk_arr->num > 0 ){
00058 ADDTO_XTARR(super_array,dblk_arr) ; /* store in output */
00059 } else {
00060 FREE_DBARR(dblk_arr) ; /* throw it away */
00061 }
00062
00063 }
00064
00065 /* done! */
00066
00067 DESTROY_SARR(rlist) ;
00068 return super_array ;
00069 }
|