ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/readfargs.c
Revision: 2.5
Committed: Wed Sep 8 09:12:36 1993 UTC (30 years, 7 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.4: +4 -0 lines
Log Message:
added conditional declaration of atof()

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     #include <stdio.h>
12    
13 greg 2.4 #include <math.h>
14    
15 greg 1.3 #include "fvect.h"
16    
17 greg 1.1 #include "object.h"
18    
19    
20 greg 2.3 #ifndef MEMHOG
21     #define bmalloc malloc
22     #endif
23    
24 greg 2.5 #ifdef DCL_ATOF
25     extern double atof();
26     #endif
27    
28 greg 2.3 extern char *bmalloc(), *savestr(), *fgetword();
29 greg 1.2 extern int atoi();
30     extern long atol();
31 greg 1.1
32    
33     readfargs(fa, fp) /* read function arguments from stream */
34     register FUNARGS *fa;
35     FILE *fp;
36     {
37 greg 2.3 #define getstr(s) (fgetword(s,sizeof(s),fp)!=NULL)
38     #define getint(s) (getstr(s) && isint(s))
39     #define getflt(s) (getstr(s) && isflt(s))
40 greg 1.1 char sbuf[MAXSTR];
41 greg 1.2 register int n, i;
42 greg 1.1
43 greg 2.3 if (!getint(sbuf) || (n = atoi(sbuf)) < 0)
44 greg 1.1 return(0);
45     if (fa->nsargs = n) {
46     fa->sarg = (char **)bmalloc(n*sizeof(char *));
47     if (fa->sarg == NULL)
48     return(-1);
49     for (i = 0; i < fa->nsargs; i++) {
50 greg 2.3 if (!getstr(sbuf))
51 greg 1.1 return(0);
52     fa->sarg[i] = savestr(sbuf);
53     }
54     } else
55     fa->sarg = NULL;
56 greg 2.3 if (!getint(sbuf) || (n = atoi(sbuf)) < 0)
57 greg 1.1 return(0);
58     #ifdef IARGS
59     if (fa->niargs = n) {
60     fa->iarg = (long *)bmalloc(n*sizeof(long));
61     if (fa->iarg == NULL)
62     return(-1);
63 greg 1.2 for (i = 0; i < n; i++) {
64 greg 2.3 if (!getint(sbuf))
65 greg 1.1 return(0);
66 greg 1.2 fa->iarg[i] = atol(sbuf);
67     }
68 greg 1.1 } else
69     fa->iarg = NULL;
70     #else
71     if (n != 0)
72     return(0);
73     #endif
74 greg 2.3 if (!getint(sbuf) || (n = atoi(sbuf)) < 0)
75 greg 1.1 return(0);
76     if (fa->nfargs = n) {
77 greg 1.3 fa->farg = (FLOAT *)bmalloc(n*sizeof(FLOAT));
78 greg 1.1 if (fa->farg == NULL)
79     return(-1);
80 greg 1.2 for (i = 0; i < n; i++) {
81 greg 2.3 if (!getflt(sbuf))
82 greg 1.1 return(0);
83 greg 1.2 fa->farg[i] = atof(sbuf);
84     }
85 greg 1.1 } else
86     fa->farg = NULL;
87     return(1);
88 greg 1.2 #undef getflt
89     #undef getint
90     #undef getstr
91 greg 1.1 }
92    
93    
94     #ifndef MEMHOG
95 greg 1.2 freefargs(fa) /* free object arguments */
96 greg 1.1 register FUNARGS *fa;
97     {
98     register int i;
99    
100     if (fa->nsargs) {
101     for (i = 0; i < fa->nsargs; i++)
102     freestr(fa->sarg[i]);
103     free((char *)fa->sarg);
104     }
105     #ifdef IARGS
106     if (fa->niargs)
107     free((char *)fa->iarg);
108     #endif
109     if (fa->nfargs)
110     free((char *)fa->farg);
111     }
112     #endif