--- ray/src/util/rmatrix.c 2023/12/06 17:57:34 2.73 +++ ray/src/util/rmatrix.c 2023/12/11 19:00:22 2.75 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rmatrix.c,v 2.73 2023/12/06 17:57:34 greg Exp $"; +static const char RCSid[] = "$Id: rmatrix.c,v 2.75 2023/12/11 19:00:22 greg Exp $"; #endif /* * General matrix operations. @@ -539,7 +539,9 @@ rmx_write_header(const RMATRIX *rm, int dtype, FILE *f dtype = DTxyze; else if ((dtype == DTxyze) & (rm->dtype == DTrgbe)) dtype = DTrgbe; - if ((dtype == DTspec) & (rm->ncomp < 3)) + if ((dtype < DTspec) & (rm->ncomp > 3)) + dtype = DTspec; + else if ((dtype == DTspec) & (rm->ncomp <= 3)) return(0); if (dtype == DTascii) /* set file type (WINDOWS) */ @@ -560,8 +562,8 @@ rmx_write_header(const RMATRIX *rm, int dtype, FILE *f } if (dtype >= DTspec) { /* # components & split? */ fputncomp(rm->ncomp, fp); - if (dtype == DTspec || (rm->ncomp > 3 && - memcmp(rm->wlpart, WLPART, sizeof(WLPART)))) + if (rm->ncomp > 3 && + memcmp(rm->wlpart, WLPART, sizeof(WLPART))) fputwlsplit(rm->wlpart, fp); } else if ((rm->ncomp != 3) & (rm->ncomp != 1)) return(0); /* wrong # components */