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

Comparing ray/src/ot/readobj2.c (file contents):
Revision 1.1 by greg, Wed May 29 17:33:18 1991 UTC vs.
Revision 1.4 by greg, Fri Jul 19 09:29:24 1991 UTC

# Line 51 | Line 51 | int  (*callback)();
51                  } else if (c == '!') {                  /* command */
52                          ungetc(c, infp);
53                          fgetline(buf, sizeof(buf), infp);
54 <                        readobj(buf);
54 >                        readobj(buf, callback);
55                  } else {                                /* object */
56                          ungetc(c, infp);
57                          getobject(input, infp, callback);
# Line 72 | Line 72 | int  (*f)();
72          char  sbuf[MAXSTR];
73          OBJREC  thisobj;
74                                          /* get modifier */
75 <        fscanf(fp, "%s", sbuf);
76 <        thisobj.omod = modifier(sbuf);
75 >        fscanf(fp, "%*s");
76 >        thisobj.omod = OVOID;
77                                          /* get type */
78          fscanf(fp, "%s", sbuf);
79          if (!strcmp(sbuf, ALIASID))
# Line 90 | Line 90 | int  (*f)();
90                  fscanf(fp, "%*s");
91                  return;
92          }
93 <        if (readfargs(&thisobj.oargs, fp) < 0) {
93 >        if (readfargs(&thisobj.oargs, fp) <= 0) {
94                  sprintf(errmsg, "(%s): bad arguments", name);
95                  objerror(&thisobj, USER, errmsg);
96          }
# Line 116 | Line 116 | int  (*f)();
116                          break;
117                  }
118          freefargs(&thisobj.oargs);
119 }
120
121
122 readfargs(fa, fp)               /* read function arguments from stream */
123 register FUNARGS  *fa;
124 FILE  *fp;
125 {
126        char  sbuf[MAXSTR];
127        int  n;
128        register int  i;
129
130        if (fscanf(fp, "%d", &n) != 1 || n < 0)
131                return(-1);
132        if (fa->nsargs = n) {
133                fa->sarg = (char **)malloc(n*sizeof(char *));
134                if (fa->sarg == NULL)
135                        goto memerr;
136                for (i = 0; i < fa->nsargs; i++) {
137                        if (fscanf(fp, "%s", sbuf) != 1)
138                                return(-1);
139                        fa->sarg[i] = savestr(sbuf);
140                }
141        } else
142                fa->sarg = NULL;
143        if (fscanf(fp, "%d", &n) != 1 || n < 0)
144                return(-1);
145 #ifdef  IARGS
146        if (fa->niargs = n) {
147                fa->iarg = (long *)malloc(n*sizeof(long));
148                if (fa->iarg == NULL)
149                        goto memerr;
150                for (i = 0; i < n; i++)
151                        if (fscanf(fp, "%ld", &fa->iarg[i]) != 1)
152                                return(-1);
153        } else
154                fa->iarg = NULL;
155 #else
156        if (n != 0)
157                return(-1);
158 #endif
159        if (fscanf(fp, "%d", &n) != 1 || n < 0)
160                return(-1);
161        if (fa->nfargs = n) {
162                fa->farg = (double *)malloc(n*sizeof(double));
163                if (fa->farg == NULL)
164                        goto memerr;
165                for (i = 0; i < n; i++)
166                        if (fscanf(fp, "%lf", &fa->farg[i]) != 1)
167                                return(-1);
168        } else
169                fa->farg = NULL;
170        return(0);
171 memerr:
172        error(SYSTEM, "out of memory in readfargs");
173 }
174
175
176 freefargs(fa)           /* free arguments */
177 register FUNARGS  *fa;
178 {
179        register int  i;
180
181        if (fa->nsargs) {
182                for (i = 0; i < fa->nsargs; i++)
183                        free(fa->sarg[i]);
184                free((char *)fa->sarg);
185        }
186 #ifdef  IARGS
187        if (fa->niargs)
188                free((char *)fa->iarg);
189 #endif
190        if (fa->nfargs)
191                free((char *)fa->farg);
119   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines