ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/readfargs.c
Revision: 2.6
Committed: Tue Aug 25 10:20:30 1998 UTC (25 years, 8 months ago) by gwlarson
Content type: text/plain
Branch: MAIN
Changes since 2.5: +2 -10 lines
Log Message:
added include of standard.h to readfargs.c

File Contents

# User Rev Content
1 greg 1.1 /* Copyright (c) 1991 Regents of the University of California */
2    
3     #ifndef lint
4     static char SCCSid[] = "$SunId$ LBL";
5     #endif
6    
7     /*
8     * Allocate, read and free object arguments
9     */
10    
11 gwlarson 2.6 #include "standard.h"
12 greg 1.1
13     #include "object.h"
14    
15    
16 greg 2.3 #ifndef MEMHOG
17     #define bmalloc malloc
18     #endif
19    
20 gwlarson 2.6 extern char *fgetword();
21 greg 1.2 extern int atoi();
22     extern long atol();
23 greg 1.1
24    
25     readfargs(fa, fp) /* read function arguments from stream */
26     register FUNARGS *fa;
27     FILE *fp;
28     {
29 greg 2.3 #define getstr(s) (fgetword(s,sizeof(s),fp)!=NULL)
30     #define getint(s) (getstr(s) && isint(s))
31     #define getflt(s) (getstr(s) && isflt(s))
32 greg 1.1 char sbuf[MAXSTR];
33 greg 1.2 register int n, i;
34 greg 1.1
35 greg 2.3 if (!getint(sbuf) || (n = atoi(sbuf)) < 0)
36 greg 1.1 return(0);
37     if (fa->nsargs = n) {
38     fa->sarg = (char **)bmalloc(n*sizeof(char *));
39     if (fa->sarg == NULL)
40     return(-1);
41     for (i = 0; i < fa->nsargs; i++) {
42 greg 2.3 if (!getstr(sbuf))
43 greg 1.1 return(0);
44     fa->sarg[i] = savestr(sbuf);
45     }
46     } else
47     fa->sarg = NULL;
48 greg 2.3 if (!getint(sbuf) || (n = atoi(sbuf)) < 0)
49 greg 1.1 return(0);
50     #ifdef IARGS
51     if (fa->niargs = n) {
52     fa->iarg = (long *)bmalloc(n*sizeof(long));
53     if (fa->iarg == NULL)
54     return(-1);
55 greg 1.2 for (i = 0; i < n; i++) {
56 greg 2.3 if (!getint(sbuf))
57 greg 1.1 return(0);
58 greg 1.2 fa->iarg[i] = atol(sbuf);
59     }
60 greg 1.1 } else
61     fa->iarg = NULL;
62     #else
63     if (n != 0)
64     return(0);
65     #endif
66 greg 2.3 if (!getint(sbuf) || (n = atoi(sbuf)) < 0)
67 greg 1.1 return(0);
68     if (fa->nfargs = n) {
69 greg 1.3 fa->farg = (FLOAT *)bmalloc(n*sizeof(FLOAT));
70 greg 1.1 if (fa->farg == NULL)
71     return(-1);
72 greg 1.2 for (i = 0; i < n; i++) {
73 greg 2.3 if (!getflt(sbuf))
74 greg 1.1 return(0);
75 greg 1.2 fa->farg[i] = atof(sbuf);
76     }
77 greg 1.1 } else
78     fa->farg = NULL;
79     return(1);
80 greg 1.2 #undef getflt
81     #undef getint
82     #undef getstr
83 greg 1.1 }
84    
85    
86     #ifndef MEMHOG
87 greg 1.2 freefargs(fa) /* free object arguments */
88 greg 1.1 register FUNARGS *fa;
89     {
90     register int i;
91    
92     if (fa->nsargs) {
93     for (i = 0; i < fa->nsargs; i++)
94     freestr(fa->sarg[i]);
95     free((char *)fa->sarg);
96     }
97     #ifdef IARGS
98     if (fa->niargs)
99     free((char *)fa->iarg);
100     #endif
101     if (fa->nfargs)
102     free((char *)fa->farg);
103     }
104     #endif