ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/readfargs.c
Revision: 2.2
Committed: Thu Dec 19 14:45:52 1991 UTC (32 years, 4 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.1: +2 -0 lines
Log Message:
added conditional compilation of atof() declarations

File Contents

# Content
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 #include "fvect.h"
14
15 #include "object.h"
16
17
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();
27 #else
28 #define bmalloc malloc
29 #endif
30
31
32 readfargs(fa, fp) /* read function arguments from stream */
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 register int n, i;
41
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 (!getstr())
50 return(0);
51 fa->sarg[i] = savestr(sbuf);
52 }
53 } else
54 fa->sarg = NULL;
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 (!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 (!getint() || (n = atoi(sbuf)) < 0)
74 return(0);
75 if (fa->nfargs = n) {
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 (!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 */
95 register FUNARGS *fa;
96 {
97 register int i;
98
99 if (fa->nsargs) {
100 for (i = 0; i < fa->nsargs; i++)
101 freestr(fa->sarg[i]);
102 free((char *)fa->sarg);
103 }
104 #ifdef IARGS
105 if (fa->niargs)
106 free((char *)fa->iarg);
107 #endif
108 if (fa->nfargs)
109 free((char *)fa->farg);
110 }
111 #endif