diff --git a/avwcpgeom.c b/avwcpgeom.c index 91ce80cc32ef1bb52afbb385d68684a3c5364734..4d031eb09c630ae9ba3b29591f169c133ed5897d 100644 --- a/avwcpgeom.c +++ b/avwcpgeom.c @@ -2,7 +2,7 @@ /* avwcpgeom.c - Copy certain parts of an AVW header - Stephen Smith, FMRIB Image Analysis Group + Mark Jenkinson and Stephen Smith, FMRIB Image Analysis Group Copyright (C) 2001 University of Oxford */ @@ -36,8 +36,10 @@ int main(argc,argv) { /* struct dsr hdr, hdr2; */ FSLIO *src = NULL, *dest = NULL; - short x, y, z, v, copydim=1, t; + short x, y, z, v, copydim=1, t, scode, qcode, dt=-1; float vx, vy, vz, tr; + int filetype; + mat44 smat, qmat; void *buffer = NULL; char desthdrname[10000]; @@ -72,9 +74,12 @@ int main(argc,argv) strcpy(desthdrname,dest->niftiptr->fname); + /* store the filetype and datatype */ + filetype = FslGetFileType(dest); + FslGetDataType(dest,&dt); FslClose(dest); /* ...and now reopen destination for writing */ - dest = FslOpen(desthdrname, "wb"); + dest = FslXOpen(desthdrname, "wb", filetype); FslCloneHeader(dest,src); @@ -93,12 +98,18 @@ int main(argc,argv) /* hdr2.dime.dim[i]=hdr.dime.dim[i]; */ /* } */ - FslGetVoxDim(src, &vx, &vy, &vz, &tr); - FslSetVoxDim(dest, vx, vy, vz, tr); - if (copydim) { - FslGetDim(src, &x, &y, &z, &v); - FslSetDim(src, x, y, z, v); - } + scode = FslGetStdXform(src,&smat); + FslSetStdXform(dest,scode,smat); + qcode = FslGetRigidXform(src,&qmat); + FslSetRigidXform(dest,qcode,qmat); + + FslGetVoxDim(src, &vx, &vy, &vz, &tr); + FslSetVoxDim(dest, vx, vy, vz, tr); + + if (copydim) { + FslGetDim(src, &x, &y, &z, &v); + FslSetDim(src, x, y, z, v); + } /* }}} */ /* {{{ write destination */ @@ -106,6 +117,9 @@ int main(argc,argv) /* if ( doswap ) */ /* swap_hdr(&hdr2); */ + /* Preserve the datatype */ + FslSetDataType(dest,dt); + FslWriteHeader(dest); FslWriteVolumes(dest, buffer, v); FslClose(dest); diff --git a/fslchfiletype b/fslchfiletype index c674d88930a8ff781897a2349b7ecb76001941b8..73d3216e0437b622d53055ebf7e30b96d5e447dc 100755 --- a/fslchfiletype +++ b/fslchfiletype @@ -23,10 +23,10 @@ storedval=$FSLOUTPUTTYPE FSLOUTPUTTYPE=$1 export FSLOUTPUTTYPE -oldfile=$2 +oldfile=`$FSLDIR/bin/remove_ext $2` if [ $# -ge 3 ] ; then - newfile=$3 + newfile=`$FSLDIR/bin/remove_ext $3` inplace=0 else newfile=`$FSLDIR/bin/tmpnam` @@ -49,7 +49,9 @@ fi # for inplace stuff remove and copy old one if [ $inplace = 1 ] ; then - $FSLDIR/bin/imrm $oldfile + if [ `$FSLDIR/bin/imtest $newfile` = 1 ] ; then + $FSLDIR/bin/imrm $oldfile + fi $FSLDIR/bin/immv $newfile $oldfile fi diff --git a/fsledithd b/fsledithd index 8155f146b85ffd5ce3802818f290d4d5da9a5ac0..f0942d4144586fdc4117ecfeae557b8bfab7cceb 100755 --- a/fsledithd +++ b/fsledithd @@ -23,12 +23,14 @@ if [ _$FSLDIR = _ ] ; then export FSLDIR fi -EDITOR=pico +if [ X$EDITOR = X ] ; then + EDITOR=pico +fi if [ $# -ge 2 ] ; then EDITOR=$2 fi tmpbase=`${FSLDIR}/bin/tmpnam`; -${FSLDIR}/bin/avwhd -x $1 > ${tmpbase} +${FSLDIR}/bin/avwhd -x $1 > ${tmpbase} || exit ${EDITOR} ${tmpbase} ${FSLDIR}/bin/avwcreatehd ${tmpbase} $1