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

Comparing ray/src/util/cmatrix.c (file contents):
Revision 2.31 by greg, Fri Jan 15 18:31:38 2021 UTC vs.
Revision 2.34 by greg, Fri Mar 11 17:15:42 2022 UTC

# Line 15 | Line 15 | static const char RCSid[] = "$Id$";
15   #include "paths.h"
16   #include "resolu.h"
17  
18 + const char      stdin_name[] = "<stdin>";
19 +
20   const char      *cm_fmt_id[] = {
21                          "unknown", COLRFMT, CIEFMT,
22                          "float", "ascii", "double"
# Line 212 | Line 214 | CMATRIX *
214   cm_load(const char *inspec, int nrows, int ncols, int dtype)
215   {
216          const int       ROWINC = 2048;
215        FILE            *fp = stdin;
217          int             swap = 0;
218 +        FILE            *fp;
219          COLOR           scale;
220          CMATRIX         *cm;
221  
222          if (!inspec)
223 <                inspec = "<stdin>";
224 <        else if (inspec[0] == '!') {
223 >                inspec = stdin_name;
224 >        else if (!*inspec)
225 >                return(NULL);
226 >        if (inspec == stdin_name) {             /* reading from stdin? */
227 >                fp = stdin;
228 >        } else if (inspec[0] == '!') {
229                  fp = popen(inspec+1, "r");
230                  if (!fp) {
231                          sprintf(errmsg, "cannot start command '%s'", inspec);
# Line 234 | Line 240 | cm_load(const char *inspec, int nrows, int ncols, int
240   #endif
241          if (dtype != DTascii)
242                  SET_FILE_BINARY(fp);            /* doesn't really work */
243 <        if (!dtype | !ncols) {                  /* expecting header? */
243 >        if (!dtype | !nrows | !ncols) {         /* expecting header? */
244                  char    *err = cm_getheader(&dtype, &nrows, &ncols, &swap, scale, fp);
245                  if (err)
246                          error(USER, err);
247          }
248 <        if (ncols <= 0 && !fscnresolu(&ncols, &nrows, fp))
249 <                error(USER, "unspecified number of columns");
248 >        if (!nrows | !ncols && !fscnresolu(&ncols, &nrows, fp))
249 >                error(USER, "unspecified matrix size");
250          switch (dtype) {
251          case DTascii:
252          case DTfloat:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines