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

Comparing ray/src/common/readfargs.c (file contents):
Revision 1.1 by greg, Fri Jul 19 09:24:41 1991 UTC vs.
Revision 2.2 by greg, Thu Dec 19 14:45:52 1991 UTC

# Line 10 | Line 10 | static char SCCSid[] = "$SunId$ LBL";
10  
11   #include <stdio.h>
12  
13 + #include "fvect.h"
14 +
15   #include "object.h"
16  
17  
18 < extern char  *savestr(), *malloc();
18 > extern char  *savestr(), *malloc(), *fgetword();
19 > #ifndef atof
20 > extern double  atof();
21 > #endif
22 > extern int  atoi();
23 > extern long  atol();
24  
25   #ifdef  MEMHOG
26   extern char  *bmalloc();
# Line 26 | Line 33 | readfargs(fa, fp)              /* read function arguments from str
33   register FUNARGS  *fa;
34   FILE  *fp;
35   {
36 + #define getstr()        (fgetword(sbuf,MAXSTR,fp)!=NULL)
37 + #define getint()        (getstr() && isint(sbuf))
38 + #define getflt()        (getstr() && isflt(sbuf))
39          char  sbuf[MAXSTR];
40 <        int  n;
31 <        register int  i;
40 >        register int  n, i;
41  
42 <        if (fscanf(fp, "%d", &n) != 1 || n < 0)
42 >        if (!getint() || (n = atoi(sbuf)) < 0)
43                  return(0);
44          if (fa->nsargs = n) {
45                  fa->sarg = (char **)bmalloc(n*sizeof(char *));
46                  if (fa->sarg == NULL)
47                          return(-1);
48                  for (i = 0; i < fa->nsargs; i++) {
49 <                        if (fscanf(fp, "%s", sbuf) != 1)
49 >                        if (!getstr())
50                                  return(0);
51                          fa->sarg[i] = savestr(sbuf);
52                  }
53          } else
54                  fa->sarg = NULL;
55 <        if (fscanf(fp, "%d", &n) != 1 || n < 0)
55 >        if (!getint() || (n = atoi(sbuf)) < 0)
56                  return(0);
57   #ifdef  IARGS
58          if (fa->niargs = n) {
59                  fa->iarg = (long *)bmalloc(n*sizeof(long));
60                  if (fa->iarg == NULL)
61                          return(-1);
62 <                for (i = 0; i < n; i++)
63 <                        if (fscanf(fp, "%ld", &fa->iarg[i]) != 1)
62 >                for (i = 0; i < n; i++) {
63 >                        if (!getint())
64                                  return(0);
65 +                        fa->iarg[i] = atol(sbuf);
66 +                }
67          } else
68                  fa->iarg = NULL;
69   #else
70          if (n != 0)
71                  return(0);
72   #endif
73 <        if (fscanf(fp, "%d", &n) != 1 || n < 0)
73 >        if (!getint() || (n = atoi(sbuf)) < 0)
74                  return(0);
75          if (fa->nfargs = n) {
76 <                fa->farg = (double *)bmalloc(n*sizeof(double));
76 >                fa->farg = (FLOAT *)bmalloc(n*sizeof(FLOAT));
77                  if (fa->farg == NULL)
78                          return(-1);
79 <                for (i = 0; i < n; i++)
80 <                        if (fscanf(fp, "%lf", &fa->farg[i]) != 1)
79 >                for (i = 0; i < n; i++) {
80 >                        if (!getflt())
81                                  return(0);
82 +                        fa->farg[i] = atof(sbuf);
83 +                }
84          } else
85                  fa->farg = NULL;
86          return(1);
87 + #undef getflt
88 + #undef getint
89 + #undef getstr
90   }
91  
92  
93   #ifndef  MEMHOG
94 < freefargs(fa)           /* free object arguments */
94 > freefargs(fa)                   /* free object arguments */
95   register FUNARGS  *fa;
96   {
97          register int  i;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines