--- ray/src/util/scanner.c 2003/02/22 02:07:30 1.3 +++ ray/src/util/scanner.c 2004/03/26 23:34:23 1.5 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: scanner.c,v 1.3 2003/02/22 02:07:30 greg Exp $"; +static const char RCSid[] = "$Id: scanner.c,v 1.5 2004/03/26 23:34:23 schorsch Exp $"; #endif /* * scanner.c - program to simulate bi-directional scanner. @@ -8,12 +8,12 @@ static const char RCSid[] = "$Id: scanner.c,v 1.3 2003 */ #include - +#include #include - #include - #include +#include +#include /* XXX pipe() fork() etc, use common/process.c instead */ #include "random.h" @@ -33,7 +33,7 @@ char *sourcetemp, /* temp files */ ANGLE alpha[181] = {90, AEND}; ANGLE beta[181] = {30, 60, 90, 120, 150, AEND}; -ANGLE gamma[181] = {45, AEND}; +ANGLE sgamma[181] = {45, AEND}; /* gamma() is a function from gnu */ char *target; /* target file name */ double targetw = 3.0; /* target width (inches) */ @@ -41,20 +41,33 @@ double targeth = 3.0; /* target height (inches) */ int xres = 16; /* x sample resolution */ int yres = 16; /* y sample resolution */ +static void quit(int code); +static void setscan(ANGLE *ang, char *arg); +static void doscan(void); +static void scanend(FILE *fp); +static void makesource(ANGLE g); +static void sendsamples(FILE *fp); +static void writesample(FILE *fp, ANGLE a, ANGLE b); +static FILE * scanstart(ANGLE g); +static double readsample(FILE *fp); -main(argc, argv) -int argc; -char *argv[]; +int +main( + int argc, + char *argv[] +) { - char *strcat(), *mktemp(); - int quit(); int i; +#ifdef SIGHUP signal(SIGHUP, quit); +#endif signal(SIGINT, quit); signal(SIGTERM, quit); +#ifdef SIGXCPU signal(SIGXCPU, SIG_IGN); signal(SIGXFSZ, SIG_IGN); +#endif for (i = 1; i < argc && argv[i][0] == '-'; i++) switch (argv[i][1]) { @@ -95,7 +108,7 @@ char *argv[]; break; case 'g': if (!strcmp(argv[i], "-gamma")) - setscan(gamma, argv[++i]); + setscan(sgamma, argv[++i]); else goto badopt; break; @@ -145,24 +158,26 @@ badopt: doscan(); quit(0); + return 0; /* pro forma return */ } void -quit(code) /* unlink temp files and exit */ -int code; +quit( /* unlink temp files and exit */ + int code +) { - int i; - unlink(sourcetemp); unlink(octreetemp); exit(code); } -setscan(ang, arg) /* set up scan according to arg */ -register ANGLE *ang; -register char *arg; +static void +setscan( /* set up scan according to arg */ + register ANGLE *ang, + register char *arg +) { int start = 0, finish = -1, step = 1; @@ -211,15 +226,14 @@ register char *arg; } -doscan() /* do scan for target */ +static void +doscan(void) /* do scan for target */ { - FILE *fopen(), *scanstart(); - double readsample(); FILE *fp; ANGLE *a, *b, *g; printf("Alpha\tBeta\tGamma\tDistribution for \"%s\"\n", target); - for (g = gamma; *g != AEND; g++) { + for (g = sgamma; *g != AEND; g++) { fp = scanstart(*g); for (b = beta; *b != AEND; b++) /* read data */ for (a = alpha; *a != AEND; a++) @@ -230,11 +244,11 @@ doscan() /* do scan for target */ } -FILE * -scanstart(g) /* open scanner pipeline */ -ANGLE g; +static FILE * +scanstart( /* open scanner pipeline */ + ANGLE g +) { - char *fgets(); int p1[2], p2[2]; int pid; FILE *fp; @@ -284,21 +298,26 @@ ANGLE g; err: fprintf(stderr, "System error in scanstart\n"); quit(1); + return NULL; /* pro forma return */ } -scanend(fp) /* done with scanner input */ -FILE *fp; +static void +scanend( /* done with scanner input */ + FILE *fp +) { fclose(fp); } -makesource(g) /* make a source (output normalized) */ -ANGLE g; +static void +makesource( /* make a source (output normalized) */ + ANGLE g +) { - FILE *fp, *fopen(); - double srcdir[3], sin(), cos(); + FILE *fp; + double srcdir[3]; srcdir[0] = sin(atorad(g)); srcdir[1] = 0.0; @@ -316,8 +335,10 @@ ANGLE g; } -sendsamples(fp) /* send our samples to fp */ -FILE *fp; +static void +sendsamples( /* send our samples to fp */ + FILE *fp +) { ANGLE *a, *b; @@ -327,11 +348,13 @@ FILE *fp; } -writesample(fp, a, b) /* write out sample ray grid */ -FILE *fp; -ANGLE a, b; +static void +writesample( /* write out sample ray grid */ + FILE *fp, + ANGLE a, + ANGLE b +) { - double sin(), cos(); float sp[6]; int i, j; @@ -355,9 +378,10 @@ ANGLE a, b; } -double -readsample(fp) /* read in sample ray grid */ -FILE *fp; +static double +readsample( /* read in sample ray grid */ + FILE *fp +) { double sum; float col[3];