--- ray/src/util/rmtxop.c 2014/08/02 17:10:43 2.3 +++ ray/src/util/rmtxop.c 2016/03/06 01:13:18 2.9 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rmtxop.c,v 2.3 2014/08/02 17:10:43 greg Exp $"; +static const char RCSid[] = "$Id: rmtxop.c,v 2.9 2016/03/06 01:13:18 schorsch Exp $"; #endif /* * General component matrix operations. @@ -22,7 +22,6 @@ typedef struct { int op; /* '*' or '+' */ } ROPERAT; /* matrix operation */ -int outfmt = DTfromHeader; /* output format */ int verbose = 0; /* verbose reporting? */ static void @@ -165,9 +164,9 @@ get_factors(double da[], int n, char *av[]) int main(int argc, char *argv[]) { + int outfmt = DTfromHeader; RMATRIX *mres = NULL; ROPERAT op; - long nbw; int i; /* initialize */ op_default(&op); @@ -232,16 +231,19 @@ main(int argc, char *argv[]) if (mres == NULL) /* check that we got something */ goto userr; /* write result to stdout */ + if (outfmt == DTfromHeader) + outfmt = mres->dtype; +#if defined(_WIN32) || defined(_WIN64) + if (outfmt != DTascii) + _setmode(fileno(stdout), _O_BINARY); +#endif newheader("RADIANCE", stdout); printargs(argc, argv, stdout); - nbw = rmx_write(mres, outfmt, stdout); - /* rmx_free(mres); mres = NULL; */ - if (nbw <= 0) { + if (!rmx_write(mres, outfmt, stdout)) { fprintf(stderr, "%s: error writing result matrix\n", argv[0]); return(1); } - if (verbose) - fprintf(stderr, "%s: %ld bytes written\n", argv[0], nbw); + /* rmx_free(mres); mres = NULL; */ return(0); userr: fprintf(stderr,