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

Comparing ray/src/gen/mkillum.c (file contents):
Revision 2.22 by schorsch, Sat Oct 23 18:55:52 2004 UTC vs.
Revision 2.23 by greg, Thu Oct 28 00:50:47 2004 UTC

# Line 61 | Line 61 | int    doneheader = 0;         /* printed header yet? */
61  
62   int     warnings = 1;           /* print warnings? */
63  
64 + int done_rprocs(struct rtproc *rtp);
65   void init(int np);
66   void filter(register FILE       *infp, char     *name);
67   void xoptions(char      *s, char        *nm);
# Line 170 | Line 171 | killpersist(void)                      /* kill persistent rtrace process
171          fclose(fp);
172   }
173  
174 + int
175 + done_rprocs(struct rtproc *rtp)
176 + {
177 +        int     st0, st1 = 0;
178 +
179 +        if (rtp->next != NULL) {        /* close last opened first! */
180 +                st1 = done_rprocs(rtp->next);
181 +                free((void *)rtp->next);
182 +                rtp->next = NULL;
183 +        }
184 +        st0 = close_process(&rtp->pd);
185 +        if (st0 < 0)
186 +                error(WARNING, "unknown return status from rtrace process");
187 +        else if (st0 > 0)
188 +                return(st0);
189 +        return(st1);
190 + }
191 +
192   void
193   quit(int status)                        /* exit with status */
194   {
176        struct rtproc   *rtp;
195          int     rtstat;
196  
197          if (rt0.next != NULL)           /* terminate persistent rtrace */
198                  killpersist();
199                                          /* clean up rtrace process(es) */
200 <        for (rtp = &rt0; rtp != NULL; rtp = rtp->next) {
201 <                rtstat = close_process(&rtp->pd);
202 <                if (status == 0) {
185 <                        if (rtstat < 0)
186 <                                error(WARNING,
187 <                                "unknown return status from rtrace process");
188 <                        else
189 <                                status = rtstat;
190 <                }
191 <        }
200 >        rtstat = done_rprocs(&rt0);
201 >        if (status == 0)
202 >                status = rtstat;
203          exit(status);
204   }
205  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines