--- ray/src/util/rpiece.c 1993/04/16 12:03:59 2.18 +++ ray/src/util/rpiece.c 1993/08/04 10:08:47 2.22 @@ -1,4 +1,4 @@ -/* Copyright (c) 1992 Regents of the University of California */ +/* Copyright (c) 1993 Regents of the University of California */ #ifndef lint static char SCCSid[] = "$SunId$ LBL"; @@ -82,6 +82,13 @@ char *argv[]; progname = argv[0]; for (i = 1; i < argc; i++) { + /* expand arguments */ + while (rval = expandarg(&argc, &argv, i)) + if (rval < 0) { + fprintf(stderr, "%s: cannot expand '%s'", + argv[0], argv[i]); + exit(1); + } if (argv[i][0] == '-') switch (argv[i][1]) { case 'v': @@ -241,7 +248,6 @@ int nextpiece(xp, yp) /* get next piece assignment */ int *xp, *yp; { - extern char *fgets(); struct flock fls; char buf[64]; @@ -336,10 +342,6 @@ rpiece() /* render picture piece by piece */ putc('\n', torp); fflush(torp); /* assigns piece to rpict */ putpiece(xorg, yorg); /* place piece in output */ - if (verbose) { /* notify caller */ - printf("%d %d done\n", xorg, yorg); - fflush(stdout); - } } } @@ -391,16 +393,17 @@ int xpos, ypos; #else pid = -1; /* no forking */ #endif - fls.l_len = (long)vres*hmult*hres*sizeof(COLR); - fls.l_start = scanorig + (vmult-1-ypos)*fls.l_len; + fls.l_start = scanorig + + ((long)(vmult-1-ypos)*vres*hmult+xpos)*hres*sizeof(COLR); #if NFS + fls.l_len = ((long)(vres-1)*hmult+1)*hres*sizeof(COLR); /* lock file section so NFS doesn't mess up */ fls.l_whence = 0; fls.l_type = F_WRLCK; fcntl(outfd, F_SETLKW, &fls); #endif /* write new piece to file */ - if (lseek(outfd, fls.l_start+(long)xpos*hres*sizeof(COLR), 0) == -1) + if (lseek(outfd, fls.l_start, 0) == -1) goto seekerr; if (hmult == 1) { if (writebuf(outfd, (char *)pbuf, @@ -416,7 +419,11 @@ int xpos, ypos; 1) == -1) goto seekerr; } - if (pid == -1) { /* fork failed */ + if (verbose) { /* notify caller */ + printf("%d %d done\n", xpos, ypos); + fflush(stdout); + } + if (pid == -1) { /* didn't fork or fork failed */ #if NFS fls.l_type = F_UNLCK; /* release lock */ fcntl(outfd, F_SETLKW, &fls);