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 } |