Skip to content

Commit

Permalink
Fixes for gcc8 (freesurfer#850)
Browse files Browse the repository at this point in the history
* Fixing sprintf

* Mainly snprintf

* Fixing snprintf

* Continued fixes

* More fixing

* Fixing more string operations

* Fixing more strings

* One more fix

* Fixing sprintf

* More fixes

* Working on more string concatenation

* Finishing off

* Fix incorrect string length

* Had some lengths incorrect
  • Loading branch information
freesurfer-rge authored Apr 7, 2021
1 parent 21e90ef commit ab5b701
Show file tree
Hide file tree
Showing 54 changed files with 1,314 additions and 404 deletions.
66 changes: 53 additions & 13 deletions mri_extract_fcd_features/mri_extract_fcd_features.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,71 +118,108 @@ main(int argc, char *argv[])
strcpy(sdir, cp) ;
}

sprintf(fname, "%s/%s/surf/%s.%s", sdir, subject, hemi, white_name) ;
int req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, subject, hemi, white_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
printf("reading %s\n", fname) ;
mris = MRISread(fname) ;
if (mris == NULL)
ErrorExit(ERROR_NOFILE, "%s: could not read surface from %s\n", Progname, fname) ;
MRISsaveVertexPositions(mris, WHITE_VERTICES) ;


sprintf(fname, "%s/%s/surf/%s.%s", sdir, subject, ohemi, white_name) ;
req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, subject, ohemi, white_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
printf("reading %s\n", fname) ;
mris_contra = MRISread(fname) ;
if (mris_contra == NULL)
ErrorExit(ERROR_NOFILE, "%s: could not read surface from %s\n", Progname, fname) ;
MRISsaveVertexPositions(mris_contra, WHITE_VERTICES) ;

sprintf(fname, "%s/%s/mri/%s", sdir, subject, ribbon_name) ;
req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, subject, ribbon_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}

printf("reading %s\n", fname) ;
mri_ribbon = MRIread(fname) ;
if (mri_ribbon == NULL)
ErrorExit(ERROR_NOFILE, "%s: could not read ribbon from %s\n", Progname, fname) ;

sprintf(fname, "%s/%s/mri/%s", sdir, subject, aparc_name) ;
req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, subject, aparc_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
printf("reading %s\n", fname) ;
mri_aparc = MRIread(fname) ;
if (mri_aparc == NULL)
ErrorExit(ERROR_NOFILE, "%s: could not read ribbon from %s\n", Progname, fname) ;

sprintf(fname, "%s/%s/mri/%s", sdir, subject, aseg_name) ;
req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, subject, aseg_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
printf("reading %s\n", fname) ;
mri_aseg = MRIread(fname) ;
if (mri_aseg == NULL)
ErrorExit(ERROR_NOFILE, "%s: could not read aseg from %s\n", Progname, fname) ;

sprintf(fname, "%s/%s/surf/%s.%s", sdir, subject, hemi, pial_name) ;
req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, subject, hemi, pial_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
if (MRISreadPialCoordinates(mris, fname) != NO_ERROR)
ErrorExit(ERROR_NOFILE, "%s: could not read pial coordinates from %s\n", Progname, fname) ;

sprintf(fname, "%s/%s/surf/%s.%s", sdir, subject, hemi, sphere_name) ;
req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, subject, hemi, sphere_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
if (MRISreadCanonicalCoordinates(mris, fname) != NO_ERROR)
ErrorExit(ERROR_NOFILE, "%s: could not read left/right spherical coordinates from %s\n", Progname, fname) ;


sprintf(fname, "%s/%s/surf/%s.%s", sdir, subject, ohemi, pial_name) ;
req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, subject, ohemi, pial_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
if (MRISreadPialCoordinates(mris_contra, fname) != NO_ERROR)
ErrorExit(ERROR_NOFILE, "%s: could not read pial coordinates from %s\n", Progname, fname) ;

sprintf(fname, "%s/%s/label/%s.%s", sdir, subject, hemi, cortex_label) ;
req = snprintf(fname, STRLEN, "%s/%s/label/%s.%s", sdir, subject, hemi, cortex_label) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
cortex = LabelRead(NULL, fname) ;
if (cortex == NULL)
ErrorExit(ERROR_NOFILE, "%s: could not read cortical label from %s\n", Progname, fname) ;
LabelRipRestOfSurface(cortex, mris) ;
LabelFree(&cortex) ;

sprintf(fname, "%s/%s/surf/%s.%s", sdir, subject, ohemi, sphere_name) ;
req = snprintf(fname, STRLEN, "%s/%s/surf/%s.%s", sdir, subject, ohemi, sphere_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
if (MRISreadCanonicalCoordinates(mris_contra, fname) != NO_ERROR)
ErrorExit(ERROR_NOFILE, "%s: could not read left/right spherical coordinates from %s\n", Progname, fname) ;


sprintf(fname, "%s/%s/mri/%s", sdir, subject, vol_name) ;
req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, subject, vol_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
printf("reading %s\n", fname) ;
mri = MRIread(fname) ;
if (mri == NULL)
ErrorExit(ERROR_NOFILE, "%s: could not read volume from %s\n", Progname, fname) ;

sprintf(fname, "%s/%s/mri/%s", sdir, subject, flair_name) ;
req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, subject, flair_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
printf("reading %s\n", fname) ;
mri_flair = MRIread(fname) ;
if (mri_flair == NULL)
Expand All @@ -208,7 +245,10 @@ main(int argc, char *argv[])
strcpy(fname, out_fname) ;
FileNameExtension(fname, ext) ;
FileNameRemoveExtension(fname, fname_no_ext) ;
sprintf(fname, "%s.flair.%s", fname_no_ext, ext) ;
int req = snprintf(fname, STRLEN, "%s.flair.%s", fname_no_ext, ext) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
if (Gdiag_no >= 0)
printf("feature(%d) = %f\n", Gdiag_no, MRIgetVoxVal(mri_flair_features, Gdiag_no, 0, 0, 0)) ;
printf("DISABLED: writing output to %s\n", fname) ;
Expand Down
15 changes: 12 additions & 3 deletions mri_fuse_intensity_images/mri_fuse_intensity_images.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,9 +141,15 @@ main(int argc, char *argv[])
printf("processing %d timepoints in SUBJECTS_DIR %s...\n", ninputs, sdir) ;
for (input = 0 ; input < ninputs ; input++)
{
sprintf(subject, "%s.long.%s", subjects[input], base_name) ;
int req = snprintf(subject, STRLEN, "%s.long.%s", subjects[input], base_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
printf("reading subject %s - %d of %d\n", subject, input+1, ninputs) ;
sprintf(fname, "%s/%s/mri/%s", sdir, subject, in_fname) ;
req = snprintf(fname, STRLEN, "%s/%s/mri/%s", sdir, subject, in_fname) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
mri_tmp = MRIread(fname) ;
if (!mri_tmp)
ErrorExit(ERROR_NOFILE, "%s: could not read input MR volume from %s",
Expand Down Expand Up @@ -205,7 +211,10 @@ main(int argc, char *argv[])

for (input = 0 ; input < ninputs ; input++)
{
sprintf(fname, "%s/%s.long.%s/mri/%s", sdir, subjects[input], base_name, out_fname) ;
int req = snprintf(fname, STRLEN, "%s/%s.long.%s/mri/%s", sdir, subjects[input], base_name, out_fname) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
printf("writing normalized volume to %s...\n", fname) ;
if (MRIwriteFrame(mri_in, fname, input) != NO_ERROR)
ErrorExit(ERROR_BADFILE, "%s: could not write normalized volume to %s",Progname, fname);
Expand Down
15 changes: 10 additions & 5 deletions mri_gtmpvc/mri_gtmpvc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,8 @@ int main(int argc, char *argv[])
fprintf(logfp,"Loading seg for gtm %s\n",SegVolFile);fflush(logfp);
gtm->anatseg = MRIread(SegVolFile);
if(gtm->anatseg==NULL) exit(1);
if(Gdiag_no > 0)printf(" done loading seg\n");fflush(stdout);
if(Gdiag_no > 0)printf(" done loading seg\n");
fflush(stdout);
if(Gdiag_no > 0) PrintMemUsage(stdout);

stem = IDstemFromName(SegVolFile);
Expand All @@ -288,7 +289,8 @@ int main(int argc, char *argv[])
fprintf(logfp,"Loading ctab %s\n",tmpstr);fflush(logfp);
gtm->ctGTMSeg = CTABreadASCII(tmpstr);
if(gtm->ctGTMSeg == NULL) exit(1);
if(Gdiag_no > 0) printf(" done loading ctab\n");fflush(stdout);
if(Gdiag_no > 0) printf(" done loading ctab\n");
fflush(stdout);
}
if(MergeHypos && gtm->ctGTMSeg->entries[77] == NULL){
gtm->ctGTMSeg->entries[77] = (CTE*) malloc(sizeof(CTE));
Expand Down Expand Up @@ -356,7 +358,8 @@ int main(int argc, char *argv[])
if(gtm->nReplace > 0) {
printf("Replacing %d\n",gtm->nReplace);fflush(stdout);
mritmp = MRIreplaceList(gtm->anatseg, gtm->SrcReplace, gtm->TrgReplace, gtm->nReplace, NULL, NULL);
if(Gdiag_no > 0) printf(" done replacing\n");fflush(stdout);
if(Gdiag_no > 0) printf(" done replacing\n");
fflush(stdout);
MRIfree(&gtm->anatseg);
gtm->anatseg = mritmp;
sprintf(tmpstr,"%s/seg.replace.list",AuxDir);
Expand All @@ -367,7 +370,8 @@ int main(int argc, char *argv[])

printf("Pruning ctab\n"); fflush(stdout);
gtm->ctGTMSeg = CTABpruneCTab(gtm->ctGTMSeg, gtm->anatseg);
if(Gdiag_no > 0) printf(" done pruning ctab\n"); fflush(stdout);
if(Gdiag_no > 0) printf(" done pruning ctab\n");
fflush(stdout);

printf("tissue type schema %s\n",gtm->ctGTMSeg->TissueTypeSchema);

Expand Down Expand Up @@ -438,7 +442,8 @@ int main(int argc, char *argv[])
if(Gdiag_no > 0) PrintMemUsage(stdout);
PrintMemUsage(logfp);
GTMautoMask(gtm);
if(Gdiag_no > 0) printf(" done auto mask \n");fflush(stdout);
if(Gdiag_no > 0) printf(" done auto mask \n");
fflush(stdout);
if(Gdiag_no > 0) PrintMemUsage(stdout);
PrintMemUsage(logfp);
}
Expand Down
95 changes: 71 additions & 24 deletions mri_hires_register/mri_hires_register.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -308,9 +308,15 @@ main(int argc, char *argv[]) {


if (Gdiag & DIAG_WRITE && parms.write_iterations > 0) {
sprintf(fname, "%s_target", parms.base_name) ;
int req = snprintf(fname, STRLEN, "%s_target", parms.base_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
MRIwriteImageViews(mri_lowres, fname, IMAGE_SIZE) ;
sprintf(fname, "intensity_%s_target", parms.base_name) ;
req = snprintf(fname, STRLEN, "intensity_%s_target", parms.base_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
MRIwriteImageViews(mri_intensity, fname, IMAGE_SIZE) ;
MRIwrite(mri_intensity, "intensity_target.mgz") ;
MRIwrite(mri_lowres, "aseg_target.mgz") ;
Expand Down Expand Up @@ -389,11 +395,17 @@ main(int argc, char *argv[]) {
MRITransformedCenteredMatrix
(mri_hires, mri_lowres, ((LTA *)(transform->xform))->xforms[0].m_L) ;
#endif
sprintf(fname, "%sfinal.mgz", parms.base_name) ;
int req = snprintf(fname, STRLEN, "%sfinal.mgz", parms.base_name) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
MRIwrite(mri_aligned, fname) ;

for (i = 1 ; i <= 10 ; i++) {
sprintf(fname, "%sfiltered%d.mgz", parms.base_name, i) ;
int req = snprintf(fname, STRLEN, "%sfiltered%d.mgz", parms.base_name, i) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
mri_filtered = MRImodeFilter(mri_aligned, NULL, i) ;
printf("writing filtered image to %s\n", fname) ;
MRIwrite(mri_filtered, fname) ;
Expand Down Expand Up @@ -1585,15 +1597,29 @@ write_snapshot(MRI *mri_lowres, MRI *mri_hires, MATRIX *m_vox_xform,
(mri_hires_intensity, mri_lowres, m_vox_xform) ;
#endif
}
if (in_fname)
sprintf(fname, "%s_%s", parms->base_name, in_fname) ;
else
sprintf(fname, "%s_%03d", parms->base_name, fno) ;
if (in_fname) {
int req = snprintf(fname, STRLEN, "%s_%s", parms->base_name, in_fname) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
} else {
int req = snprintf(fname, STRLEN, "%s_%03d", parms->base_name, fno) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
}
MRIwriteImageViews(mri_aligned, fname, IMAGE_SIZE) ;
if (in_fname)
sprintf(fname, "%s_%s.mgz", parms->base_name, in_fname) ;
else
sprintf(fname, "%s_%03d.mgz", parms->base_name, fno) ;
if (in_fname) {
int req = snprintf(fname, STRLEN, "%s_%s.mgz", parms->base_name, in_fname) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
} else {
int req = snprintf(fname, STRLEN, "%s_%03d.mgz", parms->base_name, fno) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
}
printf("writing snapshot to %s...\n", fname) ;
MRIwrite(mri_aligned, fname) ;
MRIfree(&mri_aligned) ;
Expand All @@ -1606,10 +1632,17 @@ write_snapshot(MRI *mri_lowres, MRI *mri_hires, MATRIX *m_vox_xform,
mri_aligned = MRITransformedCenteredMatrix
(mri_hires, mri_lowres, m_vox_xform) ;
#endif
if (in_fname)
sprintf(fname, "orig_%s_%s.mgz", parms->base_name, in_fname) ;
else
sprintf(fname, "orig_%s_%03d.mgz", parms->base_name, fno) ;
if (in_fname) {
int req = snprintf(fname, STRLEN, "orig_%s_%s.mgz", parms->base_name, in_fname) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
} else {
int req = snprintf(fname, STRLEN, "orig_%s_%03d.mgz", parms->base_name, fno) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
}
printf("writing snapshot to %s...\n", fname) ;
MRIwrite(mri_aligned, fname) ;
MRIfree(&mri_aligned) ;
Expand All @@ -1623,15 +1656,29 @@ write_snapshot(MRI *mri_lowres, MRI *mri_hires, MATRIX *m_vox_xform,
mri_aligned = MRITransformedCenteredMatrix
(mri_hires_intensity, mri_lowres, m_vox_xform) ;
#endif
if (in_fname)
sprintf(fname, "intensity_%s_%s", parms->base_name, in_fname) ;
else
sprintf(fname, "intensity_%s_%03d", parms->base_name, fno) ;
if (in_fname) {
int req = snprintf(fname, STRLEN, "intensity_%s_%s", parms->base_name, in_fname) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
} else {
int req = snprintf(fname, STRLEN, "intensity_%s_%03d", parms->base_name, fno) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
}
MRIwriteImageViews(mri_aligned, fname, IMAGE_SIZE) ;
if (in_fname)
sprintf(fname, "intensity_%s_%s.mgz", parms->base_name, in_fname) ;
else
sprintf(fname, "intensity_%s_%03d.mgz", parms->base_name, fno) ;
if (in_fname) {
int req = snprintf(fname, STRLEN, "intensity_%s_%s.mgz", parms->base_name, in_fname) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
} else {
int req = snprintf(fname, STRLEN, "intensity_%s_%03d.mgz", parms->base_name, fno) ;
if( req >= STRLEN ) {
std::cerr << __FUNCTION__ << ": Truncation on line " << __LINE__ << std::endl;
}
}
printf("writing snapshot to %s...\n", fname) ;
MRIwrite(mri_aligned, fname) ;
MRIfree(&mri_aligned) ;
Expand Down
Loading

0 comments on commit ab5b701

Please sign in to comment.