ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/persist.c
(Generate patch)

Comparing ray/src/rt/persist.c (file contents):
Revision 2.22 by gregl, Fri Nov 7 12:12:53 1997 UTC vs.
Revision 2.23 by gregl, Tue Nov 11 20:29:25 1997 UTC

# Line 170 | Line 170 | io_process()           /* just act as go-between for actual pro
170          char    buf[BUFSIZ], *pfin, *pfout, *pferr;
171          int     pid, nfds;
172          int     fdout, fderr = -1;
173 +        int     status = 0;
174          fd_set  readfds, excepfds;
175                                          /* load persist file */
176          n = 40;
# Line 269 | Line 270 | io_process()           /* just act as go-between for actual pro
270                                  /* close(2);    don't close stderr! */
271                                  fderr = -1;
272                          } else
273 <                                do {            /* write it all */
273 >                                cp[nr] = '\0';  /* deduce status if we can */
274 >                                n = strlen(progname);
275 >                                if (!strncmp(cp, progname, n) &&
276 >                                                cp[n++] == ':' &&
277 >                                                cp[n++] == ' ') {
278 >                                        register struct erract  *ep;
279 >                                        for (ep = erract; ep < erract+NERRS;
280 >                                                        ep++)
281 >                                                if (ep->pre[0] &&
282 >                                                        !strncmp(cp+n, ep->pre,
283 >                                                            strlen(ep->pre))) {
284 >                                                        status = ep->ec;
285 >                                                        break;
286 >                                                }
287 >                                }
288 >                                do {            /* write message */
289                                          if ((n = write(2, cp, nr)) <= 0)
290                                                  goto writerr;
291                                          cp += n;
# Line 293 | Line 309 | io_process()           /* just act as go-between for actual pro
309                                  } while ((nr -= n) > 0);
310                  }
311          }
312 <        _exit(0);               /* we ought to return renderer error status! */
312 >        wait(0);                /* wait for feeder process */
313 >        _exit(status);
314   formerr:
315          error(USER, "format error in persist file");
316   readerr:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines