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

Comparing ray/src/cal/total.c (file contents):
Revision 1.10 by greg, Tue Mar 25 05:36:22 2014 UTC vs.
Revision 1.11 by greg, Thu Mar 24 18:48:28 2016 UTC

# Line 22 | Line 22 | static const char      RCSid[] = "$Id$";
22  
23   double  init_val[] = {0., 1., -1e12, 1e12};     /* initial values */
24  
25 + long  incnt = 0;                        /* limit number of input records? */
26 + long  outcnt = 0;                       /* limit number of output records? */
27 +
28   int  func = ADD;                        /* default function */
29   double  power = 0.0;                    /* power for sum */
30   int  mean = 0;                          /* compute mean */
# Line 30 | Line 33 | int  nbicols = 0;                      /* number of binary input columns
33   int  bocols = 0;                        /* produce binary output columns */
34   int  tabc = '\t';                       /* default separator */
35   int  subtotal = 0;                      /* produce subtotals? */
36 + int  nrecsout = 0;                      /* number of records produced */
37  
38   static int execute(char *fname);
39  
# Line 72 | Line 76 | char  *argv[]
76                                          break;
77                                  case 'i':
78                                          switch (argv[a][2]) {
79 +                                        case 'n':
80 +                                                incnt = atol(argv[++a]);
81 +                                                break;
82                                          case 'a':
83                                                  nbicols = 0;
84                                                  break;
# Line 105 | Line 112 | char  *argv[]
112                                          break;
113                                  case 'o':
114                                          switch (argv[a][2]) {
115 +                                        case 'n':
116 +                                                outcnt = atol(argv[++a]);
117 +                                                break;
118                                          case 'a':
119                                                  bocols = 0;
120                                                  break;
# Line 143 | Line 153 | char  *argv[]
153          if (a >= argc)
154                  status = execute(NULL) == -1 ? 1 : status;
155          else
156 <                for ( ; a < argc; a++)
156 >                for ( ; a < argc && (outcnt <= 0 || nrecsout < outcnt); a++)
157                          status = execute(argv[a]) == -1 ? 2 : status;
158          exit(status);
159   }
# Line 261 | Line 271 | char  *fname
271                  }
272                  ncol = 0;
273                  for (nlin = 0; (count <= 0 || nlin < count) &&
274 +                                (incnt <= 0 || nlin < incnt) &&
275                                  (nread = getrecord(inpval, fp)) > 0;
276                                  nlin++) {
277                                                          /* compute */
# Line 311 | Line 322 | char  *fname
322                                  result[n] = rsign[n] * exp(result[n]);
323                  }
324                  putrecord(result, ncol, stdout);
325 +                ++nrecsout;
326 +                if (outcnt > 0 && nrecsout >= outcnt)
327 +                        break;
328                  if (!subtotal)
329                          ltotal = 0;
330          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines