--- ray/src/util/rfluxmtx.c 2015/02/18 05:56:12 2.21 +++ ray/src/util/rfluxmtx.c 2015/03/12 15:36:11 2.24 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rfluxmtx.c,v 2.21 2015/02/18 05:56:12 greg Exp $"; +static const char RCSid[] = "$Id: rfluxmtx.c,v 2.24 2015/03/12 15:36:11 greg Exp $"; #endif /* * Calculate flux transfer matrix or matrices using rcontrib @@ -1083,10 +1083,10 @@ static int add_send_object(FILE *fp) { int st; - char otype[32], oname[128]; + char thismod[128], otype[32], oname[128]; int n; - if (fscanf(fp, "%*s %s %s", otype, oname) != 2) + if (fscanf(fp, "%s %s %s", thismod, otype, oname) != 2) return(0); /* must have hit EOF! */ if (!strcmp(otype, "alias")) { fscanf(fp, "%*s"); /* skip alias */ @@ -1099,6 +1099,14 @@ add_send_object(FILE *fp) fputs(": cannot use source as a sender!\n", stderr); return(-1); } + if (strcmp(thismod, curmod)) { + if (curmod[0]) { + fputs(progname, stderr); + fputs(": warning - multiple modifiers in sender\n", + stderr); + } + strcpy(curmod, thismod); + } parse_params(&curparams, newparams); newparams[0] = '\0'; add_surface(st, oname, fp); /* read & store surface */ @@ -1333,6 +1341,7 @@ main(int argc, char *argv[]) return(my_exec(rcarg)); /* rcontrib does everything */ } clear_params(&curparams, 0); /* else load sender surface & params */ + curmod[0] = '\0'; if (load_scene(sendfn, add_send_object) < 0) return(1); if ((nsbins = prepare_sampler()) <= 0) @@ -1350,7 +1359,7 @@ main(int argc, char *argv[]) #ifdef getc_unlocked flockfile(rcfp); #endif - if (verbose) { + if (verbose > 0) { fprintf(stderr, "%s: sampling %d directions", progname, nsbins); if (curparams.nsurfs > 1) fprintf(stderr, " (%d elements)\n", curparams.nsurfs); @@ -1360,7 +1369,7 @@ main(int argc, char *argv[]) for (i = 0; i < nsbins; i++) /* send rcontrib ray samples */ if (!(*curparams.sample_basis)(&curparams, i, rcfp)) return(1); - return(pclose(rcfp) == 0); /* all finished! */ + return(pclose(rcfp) < 0); /* all finished! */ userr: if (a < argc-2) fprintf(stderr, "%s: unsupported option '%s'", progname, argv[a]);