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 1.2 by greg, Mon Jul 22 11:23:00 1991 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines