--- ray/src/util/rtcontrib.c 2005/06/09 18:27:44 1.15 +++ ray/src/util/rtcontrib.c 2005/06/10 20:38:38 1.18 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rtcontrib.c,v 1.15 2005/06/09 18:27:44 greg Exp $"; +static const char RCSid[] = "$Id: rtcontrib.c,v 1.18 2005/06/10 20:38:38 greg Exp $"; #endif /* * Gather rtrace output to compute contributions from particular sources @@ -72,7 +72,8 @@ struct rtproc { }; /* rtrace process buffer */ /* rtrace command and defaults */ -char *rtargv[256] = { "rtrace", "-dj", ".5", "-dr", "3", +char *rtargv[256+2*MAXMODLIST] = { "rtrace", + "-dj", ".5", "-dr", "3", "-ab", "1", "-ad", "128", }; int rtargc = 9; /* overriding rtrace options */ @@ -110,6 +111,7 @@ const char *modname[MAXMODLIST]; /* ordered modifier n int nmods = 0; /* number of modifiers */ MODCONT *addmodifier(char *modn, char *outf, char *binv); +void addmodfile(char *fname, char *outf, char *binv); void init(int np); int done_rprocs(struct rtproc *rtp); @@ -257,6 +259,10 @@ main(int argc, char *argv[]) rtargv[rtargc++] = argv[++i]; addmodifier(argv[i], curout, binval); continue; + case 'M': /* modifier file */ + if (argv[i][2] || i >= argc-1) break; + addmodfile(argv[++i], curout, binval); + continue; } rtargv[rtargc++] = argv[i]; /* assume rtrace option */ } @@ -452,6 +458,18 @@ addmodifier(char *modn, char *outf, char *binv) return mp; } +/* add modifiers from a file list */ +void +addmodfile(char *fname, char *outf, char *binv) +{ + char *mname[MAXMODLIST]; + int i; + /* load the file & store strings */ + wordfile(mname, fname); + for (i = 0; mname[i]; i++) /* add each one */ + addmodifier(mname[i], outf, binv); +} + /* put string to stderr */ void eputs(char *s) @@ -1045,7 +1063,7 @@ recover_output(FILE *fin) break; /* no bin separation */ } if (!lastout) { /* empty output */ - error(WARNING, "no data to recover"); + error(WARNING, "no previous data to recover"); lu_done(&ofiletab); /* reclose all outputs */ return; } @@ -1060,7 +1078,7 @@ recover_output(FILE *fin) } } if (lastout < 0) { - error(WARNING, "no existing output to recover"); + error(WARNING, "no output files to recover"); return; } /* seek on all files */