ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/data.c
(Generate patch)

Comparing ray/src/rt/data.c (file contents):
Revision 1.9 by greg, Thu May 23 08:14:57 1991 UTC vs.
Revision 1.10 by greg, Mon Jul 22 13:02:24 1991 UTC

# Line 17 | Line 17 | static char SCCSid[] = "$SunId$ LBL";
17   #include  "data.h"
18  
19  
20 + extern char  *fgetword();
21 + extern double  atof();
22 +
23   extern char  *libpath;                  /* library search path */
24  
25   static DATARRAY  *dlist = NULL;         /* data array list */
# Line 28 | Line 31 | DATARRAY *
31   getdata(dname)                          /* get data array dname */
32   char  *dname;
33   {
34 +        char  word[64];
35          char  *dfname;
36          FILE  *fp;
37          int  asize;
# Line 72 | Line 76 | char  *dname;
76                  error(SYSTEM, errmsg);
77          }
78                                                          /* get dimensions */
79 <        if (fscanf(fp, "%d", &dp->nd) != 1)
79 >        if (fgetword(word, sizeof(word), fp) == NULL || !isint(word))
80                  goto scanerr;
81 +        dp->nd = atoi(word);
82          if (dp->nd <= 0 || dp->nd > MAXDDIM) {
83                  sprintf(errmsg, "bad number of dimensions for \"%s\"", dname);
84                  error(USER, errmsg);
85          }
86          asize = 1;
87          for (i = 0; i < dp->nd; i++) {
88 <                if (fscanf(fp, "%lf %lf %d",
84 <                                &dp->dim[i].org, &dp->dim[i].siz,
85 <                                &dp->dim[i].ne) != 3)
88 >                if (fgetword(word, sizeof(word), fp) == NULL || !isflt(word))
89                          goto scanerr;
90 +                dp->dim[i].org = atof(word);
91 +                if (fgetword(word, sizeof(word), fp) == NULL || !isflt(word))
92 +                        goto scanerr;
93 +                dp->dim[i].siz = atof(word);
94 +                if (fgetword(word, sizeof(word), fp) == NULL || !isint(word))
95 +                        goto scanerr;
96 +                dp->dim[i].ne = atoi(word);
97                  if (dp->dim[i].ne < 2)
98                          goto scanerr;
99                  asize *= dp->dim[i].ne;
# Line 91 | Line 101 | char  *dname;
101                          dp->dim[i].p = (double *)malloc(dp->dim[i].ne*sizeof(double));
102                          if (dp->dim[i].p == NULL)
103                                  goto memerr;
104 <                        for (j = 0; j < dp->dim[i].ne; j++)
105 <                                if (fscanf(fp, "%lf", &dp->dim[i].p[j]) != 1)
104 >                        for (j = 0; j < dp->dim[i].ne; j++) {
105 >                                if (fgetword(word, sizeof(word), fp) == NULL ||
106 >                                                !isflt(word))
107                                          goto scanerr;
108 +                                dp->dim[i].p[j] = atof(word);
109 +                        }
110                          for (j = 1; j < dp->dim[i].ne-1; j++)
111                                  if ((dp->dim[i].p[j-1] < dp->dim[i].p[j]) !=
112                                          (dp->dim[i].p[j] < dp->dim[i].p[j+1]))
# Line 107 | Line 120 | char  *dname;
120          if ((dp->arr = (DATATYPE *)malloc(asize*sizeof(DATATYPE))) == NULL)
121                  goto memerr;
122          
123 <        for (i = 0; i < asize; i++)
124 <                if (fscanf(fp, DSCANF, &dp->arr[i]) != 1)
123 >        for (i = 0; i < asize; i++) {
124 >                if (fgetword(word, sizeof(word), fp) == NULL || !isflt(word))
125                          goto scanerr;
126 <        
126 >                dp->arr[i] = atof(word);
127 >        }
128          fclose(fp);
129          dp->next = dlist;
130          return(dlist = dp);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines