ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/Development/ray/src/rt/rxcmain.cpp
(Generate patch)

Comparing ray/src/rt/rxcmain.cpp (file contents):
Revision 2.17 by greg, Tue Apr 22 17:12:25 2025 UTC vs.
Revision 2.22 by greg, Thu Oct 23 01:26:48 2025 UTC

# Line 23 | Line 23 | int    outfmt = 'f';                   /* output format */
23  
24   int     report_intvl = 0;               /* reporting interval (seconds) */
25  
26 extern char *   progname;               // global argv[0]
27
26   RcontribSimulManager    myRCmanager;    // global rcontrib simulation manager
27  
28   #define RCONTRIB_FEATURES       "Multiprocessing\n" \
# Line 127 | Line 125 | setformat(const char *fmt)
125          if (!fmt[2])
126                  return;
127   fmterr:
128 <        sprintf(errmsg, "Unsupported i/o format: -f%s", fmt);
128 >        sprintf(errmsg, "unsupported i/o format: -f%s", fmt);
129          error(USER, errmsg);
130   }
131  
# Line 288 | Line 286 | main(int argc, char *argv[])
286                          break;
287                  case 'm':                       /* modifier name */
288                          check(2,"s");
289 <                        myRCmanager.AddModifier(argv[++i], curout, prms, binval, bincnt);
289 >                        if (!myRCmanager.AddModifier(argv[++i], curout, prms, binval, bincnt)) {
290 >                                sprintf(errmsg, "bad settings for modifier '%s'", argv[i]);
291 >                                error(USER, errmsg);
292 >                        }
293                          break;
294                  case 'M':                       /* file of modifier names */
295                          check(2,"s");
296 <                        myRCmanager.AddModFile(argv[++i], curout, prms, binval, bincnt);
296 >                        if (!myRCmanager.AddModFile(argv[++i], curout, prms, binval, bincnt)) {
297 >                                sprintf(errmsg, "bad settings for modifier file '%s'", argv[i]);
298 >                                error(USER, errmsg);
299 >                        }
300                          break;
301                  case 't':                       /* reporting interval */
302                          check(2,"i");
# Line 349 | Line 353 | main(int argc, char *argv[])
353                  myRCmanager.outOp = RCOnew;
354                                          // rval = # rows recovered
355          rval = myRCmanager.PrepOutput();
356 <                                        // check if recovered everything
357 <        if (rval >= myRCmanager.GetRowMax()) {
356 >
357 >        if (rval < 0)                   // PrepOutput() failure?
358 >                error(USER, "issue loading or creating output(s)");
359 >                                        // in case we recovered everything
360 >        if (rval >= myRCmanager.GetRowMax())
361                  error(WARNING, "nothing left to compute");
362 <                quit(0);
363 <        }
357 <        rxcontrib(rval);                /* trace ray contributions (loop) */
362 >        else
363 >                rxcontrib(rval);        // trace ray contributions (loop)
364  
365 <        quit(0);        /* exit clean */
365 >        quit(0);        // exit clean
366  
367   badopt:
368          fprintf(stderr,
# Line 563 | Line 569 | quit(
569          int  code
570   )
571   {
572 <        myRCmanager.FlushQueue();       // leave nothing in queue
572 >        if (!code)
573 >                myRCmanager.ClearModifiers();
574  
575          exit(code);
576   }

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)