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

Comparing ray/src/cal/rcalc.c (file contents):
Revision 1.9 by greg, Wed Nov 5 19:03:03 2003 UTC vs.
Revision 1.10 by greg, Thu Nov 6 05:39:33 2003 UTC

# Line 54 | Line 54 | struct field {                  /* record format struc
54   #define  savqstr(s)     strcpy(emalloc(strlen(s)+1),s)
55   #define  freqstr(s)     efree(s)
56  
57 + static int getinputrec(FILE *fp);
58   static void scaninp(void), advinp(void), resetinp(void);
59   static void putrec(void), putout(void), nbsynch(void);
60   static int getrec(void);
# Line 66 | Line 67 | static int getfield(struct field *f);
67   static void chanset(int n, double v);
68   static void bchanset(int n, double v);
69   static struct strvar* getsvar(char *svname);
70 + static double l_in(char *);
71  
72   struct field  *inpfmt = NULL;   /* input record format */
73   struct field  *outfmt = NULL;   /* output record structure */
# Line 109 | Line 111 | char  *argv[]
111          biggerlib();
112   #endif
113          varset("PI", ':', 3.14159265358979323846);
114 +        funset("in", 1, '=', &l_in);
115  
116          for (i = 1; i < argc && argv[i][0] == '-'; i++)
117                  switch (argv[i][1]) {
# Line 230 | Line 233 | nbsynch(void)               /* non-blank starting sync
233   }
234  
235  
236 < int
236 > static int
237   getinputrec(            /* get next input record */
238   FILE  *fp
239   )
# Line 297 | Line 300 | putout(void)                /* produce an output recor
300                  fflush(stdout);
301   }
302  
303 +
304 + static double
305 + l_in(char *funame)      /* function call for $channel */
306 + {
307 +        int  n;
308 +        register char  *cp;
309 +                        /* get argument as integer */
310 +        n = (int)(argument(1) + .5);
311 +        if (n != 0)     /* return channel value */
312 +                return(chanvalue(n));
313 +                        /* determine number of channels */
314 +        if (noinput || inpfmt != NULL)
315 +                return(0);
316 +        if (nbicols > 0)
317 +                return(nbicols);
318 +        if (nbicols < 0)
319 +                return(-nbicols);
320 +        cp = inpbuf;    /* need to count */
321 +        for (n = 0; *cp; )
322 +                if (blnkeq && isspace(sepchar)) {
323 +                        while (isspace(*cp))
324 +                                cp++;
325 +                        n += *cp != '\0';
326 +                        while (*cp && !isspace(*cp))
327 +                                cp++;
328 +                } else {
329 +                        n += *cp != '\n';
330 +                        while (*cp && *cp++ != sepchar)
331 +                                ;
332 +                }
333 +        return(n);
334 + }
335  
336   double
337   chanvalue(            /* return value for column n */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines