Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
thd_initdkptr.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include "mrilib.h"
00008 #include "thd.h"
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 void THD_init_diskptr_names( THD_diskptr *dkptr ,
00019 char *dirname , char *headname ,
00020 char *prefixname , int view_type ,
00021 Boolean do_datafiles )
00022 {
00023 int ii ;
00024 Boolean redo_filecode = False ;
00025 char dname[THD_MAX_NAME]="\0" , pname[THD_MAX_PREFIX]="\0" ;
00026
00027 ENTRY("THD_init_diskptr_names") ;
00028
00029 if( ! ISVALID_DISKPTR(dkptr) ) EXRETURN ;
00030
00031
00032
00033 if( dirname != NULL && (ii=strlen(dirname)) > 0 ){
00034 MCW_strncpy(dname,dirname,THD_MAX_NAME-2) ;
00035 if( dname[ii-1] != '/' ){ dname[ii] = '/'; dname[ii+1] = '\0'; }
00036 }
00037
00038 if( prefixname != NULL ){
00039 if( strstr(prefixname,"/") != NULL ){
00040 int lp = strlen(prefixname) , jj , ld ;
00041 for( ii=lp-1 ; ii >= 0 && prefixname[ii] != '/' ; ii-- ) ;
00042 if( ii >= 0 ){
00043 ld = strlen(dname) ; if( prefixname[0] == '/' ) ld = 0 ;
00044 memcpy(dname+ld,prefixname,ii+1) ; dname[ld+ii+1] = '\0' ;
00045 MCW_strncpy(pname,prefixname+ii+1,THD_MAX_PREFIX) ;
00046 } else {
00047 MCW_strncpy(pname,prefixname,THD_MAX_PREFIX) ;
00048 }
00049 } else {
00050 MCW_strncpy(pname,prefixname,THD_MAX_PREFIX) ;
00051 }
00052 }
00053
00054
00055
00056 if( (ii=strlen(dname)) > 0 ){
00057 MCW_strncpy( dkptr->directory_name , dname , THD_MAX_NAME ) ;
00058 if( dkptr->directory_name[ii-1] != '/' ){
00059 dkptr->directory_name[ii] = '/' ;
00060 dkptr->directory_name[ii+1] = '\0' ;
00061 }
00062 }
00063
00064
00065
00066 if( view_type >= FIRST_VIEW_TYPE && view_type <= LAST_VIEW_TYPE ){
00067 MCW_strncpy( dkptr->viewcode , VIEW_codestr[view_type] , THD_MAX_VIEWCODE ) ;
00068 redo_filecode = True ;
00069 }
00070
00071
00072
00073 if( strlen(pname) > 0 ){
00074 MCW_strncpy( dkptr->prefix , pname , THD_MAX_PREFIX ) ;
00075 redo_filecode = True ;
00076 }
00077
00078
00079
00080 if( redo_filecode ){
00081 PREFIX_VIEW_TO_FILECODE( dkptr->prefix, dkptr->viewcode, dkptr->filecode ) ;
00082 }
00083
00084
00085
00086 if( headname != NULL && strlen(headname) > 0 ){
00087 MCW_strncpy( dkptr->header_name , headname , THD_MAX_NAME ) ;
00088 } else {
00089 sprintf( dkptr->header_name , "%s%s.%s" ,
00090 dkptr->directory_name,dkptr->filecode,DATASET_HEADER_SUFFIX ) ;
00091 }
00092
00093
00094
00095 if( do_datafiles ){
00096
00097 sprintf( dkptr->brick_name , "%s%s.%s",
00098 dkptr->directory_name,dkptr->filecode,DATASET_BRICK_SUFFIX ) ;
00099
00100 }
00101 EXRETURN ;
00102 }