--- ray/src/rt/rpict.c 1992/07/10 14:58:19 2.8 +++ ray/src/rt/rpict.c 1992/09/08 20:56:20 2.13 @@ -26,6 +26,8 @@ static char SCCSid[] = "$SunId$ LBL"; #include "random.h" +#include "paths.h" + int dimlist[MAXDIM]; /* sampling dimensions */ int ndims = 0; /* number of sampling dimensions */ int samplendx; /* sample index number */ @@ -77,7 +79,8 @@ extern long nrays; /* number of rays traced */ #define pixjitter() (.5+dstrpix*(.5-frandom())) -#define HFTEMPLATE "/tmp/hfXXXXXX" +#define RFTEMPLATE "rfXXXXXX" +#define HFTEMPLATE TEMPLATE static char *hfname = NULL; /* header file name */ static FILE *hfp = NULL; /* header file pointer */ @@ -179,7 +182,8 @@ char *pout, *zout, *prvr; */ { extern char *rindex(), *strncpy(), *strcat(); - char fbuf[128], fbuf2[128], *zf; + char fbuf[128], fbuf2[128]; + register char *cp; RESOLU rs; double pa; /* finished writing header */ @@ -197,7 +201,7 @@ char *pout, *zout, *prvr; if (seq <= 0) seq = 0; else if (prvr != NULL && isint(prvr)) { - int rn; /* skip to specified view */ + register int rn; /* skip to specified view */ if ((rn = atoi(prvr)) < seq) error(USER, "recover frame less than start frame"); if (pout == NULL) @@ -209,11 +213,11 @@ char *pout, *zout, *prvr; } if (pout != NULL) { sprintf(fbuf, pout, seq); - if (!strcmp(prvr, fbuf)) { /* rename recover file */ + if (prvr != NULL && !strcmp(prvr, fbuf)) { /* rename */ fbuf2[0] = '\0'; - if ((prvr = rindex(fbuf, '/')) != NULL) - strncpy(fbuf2, fbuf, prvr-fbuf+1); - strcat(fbuf2, "rfXXXXXX"); + if ((cp = rindex(fbuf, '/')) != NULL) + strncpy(fbuf2, fbuf, cp-fbuf+1); + strcat(fbuf2, RFTEMPLATE); prvr = mktemp(fbuf2); if (rename(fbuf, prvr) < 0 && errno != ENOENT) { sprintf(errmsg, @@ -244,18 +248,19 @@ char *pout, *zout, *prvr; "cannot recover view parameters from \"%s\"", prvr); error(WARNING, errmsg); } else { - char *err; - if ((err = setview(&ourview)) != NULL) - error(USER, err); pa = 0.0; hres = scanlen(&rs); vres = numscans(&rs); } + if ((cp = setview(&ourview)) != NULL) + error(USER, cp); normaspect(viewaspect(&ourview), &pa, &hres, &vres); if (seq) { if (ralrm > 0) { - sprintf(errmsg, "starting frame %d\n", seq); - eputs(errmsg); + fprintf(stderr, "FRAME %d:", seq); + fprintview(&ourview, stderr); + putc('\n', stderr); + fflush(stderr); } printf("FRAME=%d\n", seq); } @@ -267,10 +272,10 @@ char *pout, *zout, *prvr; fputformat(COLRFMT, stdout); putchar('\n'); if (zout != NULL) - sprintf(zf=fbuf, zout, seq); + sprintf(cp=fbuf, zout, seq); else - zf = NULL; - render(zf, prvr); + cp = NULL; + render(cp, prvr); prvr = NULL; } while (seq++); } @@ -279,14 +284,11 @@ char *pout, *zout, *prvr; nextview(fp) /* get next view from fp */ FILE *fp; { - char linebuf[256], *err; + char linebuf[256]; while (fgets(linebuf, sizeof(linebuf), fp) != NULL) - if (isview(linebuf) && sscanview(&ourview, linebuf) > 0) { - if ((err = setview(&ourview)) != NULL) - error(USER, err); + if (isview(linebuf) && sscanview(&ourview, linebuf) > 0) return(0); - } return(EOF); } @@ -413,6 +415,8 @@ char *zfile, *oldfile; if (sampdens != NULL) free(sampdens); pctdone = 100.0; + if (ralrm > 0) + report(); return; writerr: error(SYSTEM, "write error in render"); @@ -615,7 +619,8 @@ char *oldfile; unlink(oldfile); return(y); writerr: - error(SYSTEM, "write error in salvage"); + sprintf(errmsg, "write error during recovery of \"%s\"", oldfile); + error(SYSTEM, errmsg); }