Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

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    Major portions of this software are copyrighted by the Medical College
00003    of Wisconsin, 1994-2000, and are released under the Gnu General Public
00004    License, Version 2.  See the file README.Copyright for details.
00005 ******************************************************************************/
00006 
00007 #include "mrilib.h"
00008 #include "thd.h"
00009 
00010 /*---------------------------------------------------------------*/
00011 /*! Initialize the names inside a diskptr
00012    29 Feb 2001: modified to take directory from prefixname
00013                 as well as from dirname - RWCox.
00014    12 May 2003: if prefixname starts with '/', then dirname
00015                 will be ignored - RWCox.
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" ; /* 29 Feb 2001 */
00026 
00027 ENTRY("THD_init_diskptr_names") ;
00028 
00029    if( ! ISVALID_DISKPTR(dkptr) ) EXRETURN ;
00030 
00031    /* 29 Feb 2001: put dirname and any directories in prefixname together */
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-- ) ; /* find last '/' */
00042          if( ii >= 0 ){  /* should always be true */
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) ; /* should never transpire */
00048          }
00049       } else {
00050          MCW_strncpy(pname,prefixname,THD_MAX_PREFIX) ;
00051       }
00052    }
00053 
00054    /*-- rewrite directory name? --*/
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    /*-- rewrite viewcode? --*/
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    /*-- rewrite prefix? --*/
00072 
00073    if( strlen(pname) > 0 ){
00074       MCW_strncpy( dkptr->prefix , pname , THD_MAX_PREFIX ) ;
00075       redo_filecode = True ;
00076    }
00077 
00078    /*-- if either viewcode or prefix changed, alter filecode --*/
00079 
00080    if( redo_filecode ){
00081       PREFIX_VIEW_TO_FILECODE( dkptr->prefix, dkptr->viewcode, dkptr->filecode ) ;
00082    }
00083 
00084    /*-- rewrite header_name --*/
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    /*-- if desired, create the datafile names as well --*/
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 }
 

Powered by Plone

This site conforms to the following standards: