X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=libctsim%2Fphantom.cpp;h=59b46ce4ccf3dc5aca9950999dd820c5c8170341;hb=74377b5c32f908a9d5a7665f4ad81d35619272f9;hp=aff37a0ac9242fae8dcd4b8e5bc72d7b970f443d;hpb=3147cd44cff6132e51eac1a179c1fc3d405faacc;p=ctsim.git diff --git a/libctsim/phantom.cpp b/libctsim/phantom.cpp index aff37a0..59b46ce 100644 --- a/libctsim/phantom.cpp +++ b/libctsim/phantom.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: phantom.cpp,v 1.18 2000/09/04 09:06:46 kevin Exp $ +** $Id: phantom.cpp,v 1.19 2000/11/09 00:12:25 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -196,41 +196,32 @@ Phantom::createFromPhantom (const int phmid) bool Phantom::createFromFile (const char* const fname) { - bool stoploop = false; - bool retval = false; + bool bGoodFile = true; FILE *fp; if ((fp = fopen (fname, "r")) == NULL) return (false); m_name = fname; - do { - if (! feof(fp)) { - double cx, cy, u, v, rot, dens; - char pelemtype[80]; - char str[1024]; - fgets (str, sizeof(str), fp); - int n = sscanf (str, "%79s %lf %lf %lf %lf %lf %lf", pelemtype, &cx, &cy, &u, &v, &rot, &dens); + + while (1) { + double cx, cy, u, v, rot, dens; + char pelemtype[80]; + + int status = fscanf (fp, "%79s %lf %lf %lf %lf %lf %lf", pelemtype, &cx, &cy, &u, &v, &rot, &dens); - if (n == EOF || n == 0) { /* end of file */ - stoploop = true; - retval = false; - } else if (n != 7) { - stoploop = true; - retval = false; - } else { - addPElem (pelemtype, cx, cy, u, v, rot, dens); - retval = true; - } - } else { - stoploop = true; - retval = true; + if (status == static_cast(EOF)) + break; + else if (status != 7) { + sys_error (ERR_WARNING, "Insufficient fields reading phantom file %s [Phantom::createFromFile]", fname); + bGoodFile = false; } - } while (stoploop == false); + addPElem (pelemtype, cx, cy, u, v, rot, dens); + } fclose (fp); - return (retval); + return (bGoodFile); }