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.7 by greg, Tue May 8 10:37:57 1990 UTC vs.
Revision 1.10 by greg, Mon Jul 22 13:02:24 1991 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1986 Regents of the University of California */
1 > /* Copyright (c) 1991 Regents of the University of California */
2  
3   #ifndef lint
4   static char SCCSid[] = "$SunId$ LBL";
# 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 <        if (dp->nd <= 0 || dp->nd > MAXDIM) {
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);
# Line 299 | Line 313 | double  *pt;
313                          i = (lower + upper) >> 1;
314                          if (pt[0] >= dp->dim[0].p[i])
315                                  lower = i;
316 <                        else if (pt[0] < dp->dim[0].p[i])
316 >                        else
317                                  upper = i;
318                  } while (i != (lower + upper) >> 1);
319 <                if (i < 0)
306 <                        i = 0;
307 <                else if (i > dp->dim[0].ne - 2)
319 >                if (i > dp->dim[0].ne - 2)
320                          i = dp->dim[0].ne - 2;
321                  x = i + (pt[0] - dp->dim[0].p[i]) /
322                                  (dp->dim[0].p[i+1] - dp->dim[0].p[i]);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines