--- ray/src/cv/bsdfquery.c 2013/11/21 23:57:28 2.1 +++ ray/src/cv/bsdfquery.c 2014/04/11 20:27:23 2.3 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: bsdfquery.c,v 2.1 2013/11/21 23:57:28 greg Exp $"; +static const char RCSid[] = "$Id: bsdfquery.c,v 2.3 2014/04/11 20:27:23 greg Exp $"; #endif /* * Query values from the given BSDF (scattering interpolant or XML repres.) @@ -27,8 +27,8 @@ readIOdir(FVECT idir, FVECT odir, FILE *fp, int fmt) switch (fmt) { case 'a': - if (fscanf(fp, "%lf %lf %lf %lf %lf %lf", - dvec, dvec+1, dvec+2, dvec+3, dvec+4, dvec+5) != 6) + if (fscanf(fp, FVFORMAT, dvec, dvec+1, dvec+2) != 3 || + fscanf(fp, FVFORMAT, dvec+3, dvec+4, dvec+5) != 3) return(0); VCOPY(idir, dvec); VCOPY(odir, dvec+3); @@ -74,13 +74,13 @@ main(int argc, char *argv[]) outfmt = argv[1][3]; ++argv; --argc; } - if ((n = strlen(argv[1])-4) > 0) { + if (argc > 1 && (n = strlen(argv[1])-4) > 0) { if (!strcasecmp(argv[1]+n, ".xml")) inpXML = 1; else if (!strcasecmp(argv[1]+n, ".sir")) inpXML = 0; } - if (inpXML < 0) { + if ((argc != 2) | (inpXML < 0)) { fprintf(stderr, "Usage: %s [-fio] bsdf.{sir|xml}\n", progname); return(1); }