--- ray/src/gen/mkillum.c 1993/09/21 17:09:59 2.6 +++ ray/src/gen/mkillum.c 2003/06/08 12:03:10 2.13 @@ -1,19 +1,17 @@ -/* Copyright (c) 1991 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: mkillum.c,v 2.13 2003/06/08 12:03:10 schorsch Exp $"; #endif - /* * Make illum sources for optimizing rendering process */ -#include "mkillum.h" - #include - #include +#include +#include "platform.h" +#include "mkillum.h" + /* default parameters */ #define SAMPDENS 48 /* points per projected steradian */ #define NSAMPS 32 /* samples per point */ @@ -30,7 +28,8 @@ char *rtargv[64] = { "rtrace", "-dj", ".25", "-dr", " "-ab", "2", "-ad", "256", "-as", "128", "-aa", ".15", }; int rtargc = 14; /* overriding rtrace options */ -char *myrtopts[] = { "-I-", "-i-", "-ov", "-h-", "-fff", "-y", "0", NULL }; +char *myrtopts[] = { "-I-", "-i-", "-ld-", "-ov", "-h-", + "-fff", "-y", "0", NULL }; struct rtproc rt; /* our rtrace process */ @@ -59,16 +58,11 @@ int doneheader = 0; /* printed header yet? */ int warnings = 1; /* print warnings? */ -extern char *fgetline(), *fgetword(), *sskip(), - *atos(), *iskip(), *fskip(), *strcpy(); -extern FILE *popen(); - main(argc, argv) /* compute illum distributions using rtrace */ int argc; char *argv[]; { - extern char *getenv(), *getpath(); char *rtpath; FILE *fp; register int i; @@ -137,6 +131,7 @@ char *argv[]; } +void quit(status) /* exit with status */ int status; { @@ -162,7 +157,9 @@ init() /* start rtrace and set up buffers */ ofun[OBJ_SPHERE].funp = o_sphere; ofun[OBJ_RING].funp = o_ring; /* set up signal handling */ +#ifndef _WIN32 /* XXX what do we use instead? */ signal(SIGPIPE, quit); +#endif /* start rtrace process */ errno = 0; maxbytes = open_process(rt.pd, rtargv); @@ -180,10 +177,11 @@ init() /* start rtrace and set up buffers */ error(SYSTEM, "out of memory in init"); rt.nrays = 0; /* set up urand */ - initurand(2048); + initurand(16384); } +void eputs(s) /* put string to stderr */ register char *s; { @@ -199,6 +197,7 @@ register char *s; } +void wputs(s) /* print warning if enabled */ char *s; { @@ -258,12 +257,14 @@ char *nm; case ' ': case '\t': case '\n': + case '\r': + case '\f': cp++; continue; case 'm': /* material name */ if (*++cp != '=') break; - if (!*++cp) + if (!*++cp || isspace(*cp)) break; atos(thisillum.matname, MAXSTR, cp); cp = sskip(cp); @@ -275,7 +276,7 @@ char *nm; case 'f': /* data file name */ if (*++cp != '=') break; - if (!*++cp) { + if (!*++cp || isspace(*cp)) { strcpy(thisillum.datafile,thisillum.matname); thisillum.dfnum = 0; thisillum.flags &= ~IL_DATCLB; @@ -325,7 +326,7 @@ char *nm; case 'd': /* point sample density */ if (*++cp != '=') break; - if (!isintd(++cp, " \t\n")) + if (!isintd(++cp, " \t\n\r")) break; thisillum.sampdens = atoi(cp); cp = sskip(cp); @@ -333,7 +334,7 @@ char *nm; case 's': /* point super-samples */ if (*++cp != '=') break; - if (!isintd(++cp, " \t\n")) + if (!isintd(++cp, " \t\n\r")) break; thisillum.nsamps = atoi(cp); cp = sskip(cp); @@ -351,7 +352,7 @@ char *nm; case 'b': /* brightness */ if (*++cp != '=') break; - if (!isfltd(++cp, " \t\n")) + if (!isfltd(++cp, " \t\n\r")) break; thisillum.minbrt = atof(cp); if (thisillum.minbrt < 0.) @@ -361,7 +362,7 @@ char *nm; case 'o': /* output file */ if (*++cp != '=') break; - if (!*++cp) + if (!*++cp || isspace(*cp)) break; atos(buf, sizeof(buf), cp); cp = sskip(cp); @@ -379,7 +380,8 @@ char *nm; return; } opterr: /* skip faulty option */ - cp = sskip(cp); + while (*cp && !isspace(*cp)) + cp++; nerrs++; } /* print header? */ @@ -445,10 +447,10 @@ char *nm; if (fgetword(str, MAXSTR, fp) == NULL) goto readerr; /* is it an alias? */ - if (!strcmp(str, ALIASID)) { + if (!strcmp(str, ALIASKEY)) { if (fgetword(str, MAXSTR, fp) == NULL) goto readerr; - printf("\n%s %s %s", thisillum.altmat, ALIASID, str); + printf("\n%s %s %s", thisillum.altmat, ALIASKEY, str); if (fgetword(str, MAXSTR, fp) == NULL) goto readerr; printf("\t%s\n", str);