--- ray/src/util/rpiece.c 1993/10/18 13:17:47 2.27 +++ ray/src/util/rpiece.c 1994/04/11 14:44:10 2.30 @@ -148,7 +148,8 @@ char *argv[]; case 'F': /* syncronization file */ if (argv[i][2]) break; - if ((syncfp = fopen(argv[++i],"r+")) == NULL) { + if ((syncfp = + fdopen(open(argv[++i],O_RDWR|O_CREAT,0666),"r+")) == NULL) { fprintf(stderr, "%s: cannot open\n", argv[i]); exit(1); @@ -186,10 +187,12 @@ int fd; int ltyp; { static struct flock fls; /* static so initialized to zeroes */ + extern char *sys_errlist[]; fls.l_type = ltyp; if (fcntl(fd, F_SETLKW, &fls) < 0) { - fprintf(stderr, "%s: cannot lock/unlock file\n", progname); + fprintf(stderr, "%s: cannot lock/unlock file: %s\n", + progname, sys_errlist[errno]); exit(1); } } @@ -230,7 +233,8 @@ char **av; dolock(outfd, F_WRLCK); if ((fp = fdopen(dup(outfd), "w")) == NULL) goto filerr; - printargs(ac, av, fp); /* write header */ + newheader("RADIANCE", fp); /* create header */ + printargs(ac, av, fp); fprintf(fp, "SOFTWARE= %s\n", VersionID); fputs(VIEWSTR, fp); fprintview(&ourview, fp); @@ -341,6 +345,10 @@ register int *xp, *yp; return(0); /* only check if asked */ if (pdone == NULL) /* first call */ pdone = calloc(hmult*vmult, sizeof(char)); + if (pdone == NULL) { + fprintf(stderr, "%s: out of memory\n", progname); + exit(1); + } if (readpos != -1) /* mark what's been done */ fseek(syncfp, readpos, 0); while (fscanf(syncfp, "%d %d", xp, yp) == 2)