--- ray/src/util/rad.c 2003/07/03 18:03:58 2.67 +++ ray/src/util/rad.c 2003/10/27 10:32:06 2.74 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rad.c,v 2.67 2003/07/03 18:03:58 greg Exp $"; +static const char RCSid[] = "$Id: rad.c,v 2.74 2003/10/27 10:32:06 schorsch Exp $"; #endif /* * Executive program for oconv, rpict and pfilt @@ -8,12 +8,22 @@ static const char RCSid[] = "$Id: rad.c,v 2.67 2003/07 #include "standard.h" #include +#include #include "platform.h" +#include "rtprocess.h" #include "view.h" #include "paths.h" #include "vars.h" +#ifdef _WIN32 + #define DELCMD "del" + #define RENAMECMD "rename" +#else + #define DELCMD "rm -f" + #define RENAMECMD "mv" +#endif + /* variables (alphabetical by name) */ #define AMBFILE 0 /* ambient file name */ #define DETAIL 1 /* level of scene detail */ @@ -80,7 +90,6 @@ char overfile[] = NULL_DEVICE; char overfile[] = "overture.unf"; #endif -extern time_t time(); time_t scenedate; /* date of latest scene or object file */ time_t octreedate; /* date of octree */ @@ -161,7 +170,7 @@ char *argv[]; goto userr; rifname = argv[i]; /* check command-line options */ - if (nprocs > 1 & viewselect != NULL) + if ((nprocs > 1) & (viewselect != NULL)) nprocs = 1; /* assign Radiance root file name */ rootname(radname, rifname); @@ -208,7 +217,7 @@ register char *rn, *fn; { char *tp, *dp; - for (tp = NULL, dp = rn; *rn = *fn++; rn++) + for (tp = NULL, dp = rn; (*rn = *fn++); rn++) if (ISDIRSEP(*rn)) dp = rn; else if (*rn == '.') @@ -303,14 +312,13 @@ checkfiles() /* check for existence and modified tim getoctcube(org, sizp) /* get octree bounding cube */ double org[3], *sizp; { - extern FILE *popen(); static double oorg[3], osiz = 0.; double min[3], max[3]; char buf[1024]; FILE *fp; register int i; - if (osiz <= FTINY) + if (osiz <= FTINY) { if (!nprocs && fdate(oct1name) < (scenedate>illumdate?scenedate:illumdate)) { /* run getbbox */ @@ -346,6 +354,7 @@ double org[3], *sizp; } pclose(fp); } + } org[0] = oorg[0]; org[1] = oorg[1]; org[2] = oorg[2]; *sizp = osiz; } @@ -439,11 +448,11 @@ oconv() /* run oconv and mkillum if necessary */ } if (oct1name == vval(OCTREE)) /* no mkillum? */ oct1date = octreedate > matdate ? octreedate : matdate; - if (oct1date >= octreedate & oct1date >= matdate - & oct1date >= illumdate) /* all done */ + if ((oct1date >= octreedate) & (oct1date >= matdate) + & (oct1date >= illumdate)) /* all done */ return; /* make octree0 */ - if (oct0date < scenedate | oct0date < illumdate) { + if ((oct0date < scenedate) | (oct0date < illumdate)) { if (touchonly && oct0date) touch(oct0name); else { /* build command */ @@ -514,7 +523,7 @@ addarg(op, arg) /* add argument and advance pointer register char *op, *arg; { *op = ' '; - while (*++op = *arg++) + while ( (*++op = *arg++) ) ; return(op); } @@ -550,11 +559,12 @@ checkambfile() /* check date on ambient file */ return; if (!(afdate = fdate(vval(AMBFILE)))) return; - if (oct1date > afdate) + if (oct1date > afdate) { if (touchonly) touch(vval(AMBFILE)); else rmfile(vval(AMBFILE)); + } } @@ -603,7 +613,7 @@ char *po; &siz[0], &org[1], &siz[1], &org[2], &siz[2]) != 6) badvalue(ZONE); siz[0] -= org[0]; siz[1] -= org[1]; siz[2] -= org[2]; - if (siz[0] <= FTINY | siz[1] <= FTINY | siz[2] <= FTINY) + if ((siz[0] <= FTINY) | (siz[1] <= FTINY) | (siz[2] <= FTINY)) badvalue(ZONE); getoctcube(org, &d); d *= 3./(siz[0]+siz[1]+siz[2]); @@ -611,19 +621,19 @@ char *po; case LOW: po = addarg(po, "-ps 16"); op = addarg(op, "-dp 64"); - sprintf(op, " -ar %d", (int)(4*d)); + sprintf(op, " -ar %d", (int)(8*d)); op += strlen(op); break; case MEDIUM: po = addarg(po, "-ps 8"); op = addarg(op, "-dp 128"); - sprintf(op, " -ar %d", (int)(8*d)); + sprintf(op, " -ar %d", (int)(16*d)); op += strlen(op); break; case HIGH: po = addarg(po, "-ps 4"); op = addarg(op, "-dp 256"); - sprintf(op, " -ar %d", (int)(16*d)); + sprintf(op, " -ar %d", (int)(32*d)); op += strlen(op); break; } @@ -640,20 +650,20 @@ char *po; overture = 0; switch (vscale(VARIABILITY)) { case LOW: - op = addarg(op, "-aa .4 -ad 64"); + op = addarg(op, "-aa .3 -ad 256"); break; case MEDIUM: - op = addarg(op, "-aa .3 -ad 128"); + op = addarg(op, "-aa .25 -ad 512"); break; case HIGH: - op = addarg(op, "-aa .25 -ad 256"); + op = addarg(op, "-aa .2 -ad 1024"); break; } op = addarg(op, "-as 0"); d = ambval(); sprintf(op, " -av %.2g %.2g %.2g", d, d, d); op += strlen(op); - op = addarg(op, "-lr 3 -lw .02"); + op = addarg(op, "-lr 6 -lw .01"); if (vdef(RENDER)) op = addarg(op, vval(RENDER)); } @@ -671,7 +681,7 @@ char *po; &siz[0], &org[1], &siz[1], &org[2], &siz[2]) != 6) badvalue(ZONE); siz[0] -= org[0]; siz[1] -= org[1]; siz[2] -= org[2]; - if (siz[0] <= FTINY | siz[1] <= FTINY | siz[2] <= FTINY) + if ((siz[0] <= FTINY) | (siz[1] <= FTINY) | (siz[2] <= FTINY)) badvalue(ZONE); getoctcube(org, &d); asz = (siz[0]+siz[1]+siz[2])/3.; @@ -680,7 +690,7 @@ char *po; case LOW: po = addarg(po, vbool(PENUMBRAS) ? "-ps 4" : "-ps 8"); op = addarg(op, "-dp 256"); - sprintf(op, " -ar %d", (int)(8*d)); + sprintf(op, " -ar %d", (int)(16*d)); op += strlen(op); sprintf(op, " -ms %.2g", asz/20.); op += strlen(op); @@ -688,7 +698,7 @@ char *po; case MEDIUM: po = addarg(po, vbool(PENUMBRAS) ? "-ps 3" : "-ps 6"); op = addarg(op, "-dp 512"); - sprintf(op, " -ar %d", (int)(16*d)); + sprintf(op, " -ar %d", (int)(32*d)); op += strlen(op); sprintf(op, " -ms %.2g", asz/40.); op += strlen(op); @@ -696,7 +706,7 @@ char *po; case HIGH: po = addarg(po, vbool(PENUMBRAS) ? "-ps 2" : "-ps 4"); op = addarg(op, "-dp 1024"); - sprintf(op, " -ar %d", (int)(32*d)); + sprintf(op, " -ar %d", (int)(64*d)); op += strlen(op); sprintf(op, " -ms %.2g", asz/80.); op += strlen(op); @@ -708,7 +718,7 @@ char *po; else op = addarg(op, "-ds .3"); op = addarg(op, "-dt .1 -dc .5 -dr 1 -sj .7 -st .1"); - if (overture = vint(INDIRECT)) { + if ( (overture = vint(INDIRECT)) ) { sprintf(op, " -ab %d", overture); op += strlen(op); } @@ -719,19 +729,19 @@ char *po; overture = 0; switch (vscale(VARIABILITY)) { case LOW: - op = addarg(op, "-aa .25 -ad 196 -as 0"); + op = addarg(op, "-aa .2 -ad 329 -as 42"); break; case MEDIUM: - op = addarg(op, "-aa .2 -ad 400 -as 64"); + op = addarg(op, "-aa .15 -ad 800 -as 128"); break; case HIGH: - op = addarg(op, "-aa .15 -ad 768 -as 196"); + op = addarg(op, "-aa .1 -ad 1536 -as 392"); break; } d = ambval(); sprintf(op, " -av %.2g %.2g %.2g", d, d, d); op += strlen(op); - op = addarg(op, "-lr 6 -lw .002"); + op = addarg(op, "-lr 8 -lw .002"); if (vdef(RENDER)) op = addarg(op, vval(RENDER)); } @@ -749,7 +759,7 @@ char *po; &siz[0], &org[1], &siz[1], &org[2], &siz[2]) != 6) badvalue(ZONE); siz[0] -= org[0]; siz[1] -= org[1]; siz[2] -= org[2]; - if (siz[0] <= FTINY | siz[1] <= FTINY | siz[2] <= FTINY) + if ((siz[0] <= FTINY) | (siz[1] <= FTINY) | (siz[2] <= FTINY)) badvalue(ZONE); getoctcube(org, &d); asz = (siz[0]+siz[1]+siz[2])/3.; @@ -758,7 +768,7 @@ char *po; case LOW: po = addarg(po, vbool(PENUMBRAS) ? "-ps 1" : "-ps 8"); op = addarg(op, "-dp 1024"); - sprintf(op, " -ar %d", (int)(16*d)); + sprintf(op, " -ar %d", (int)(32*d)); op += strlen(op); sprintf(op, " -ms %.2g", asz/40.); op += strlen(op); @@ -766,7 +776,7 @@ char *po; case MEDIUM: po = addarg(po, vbool(PENUMBRAS) ? "-ps 1" : "-ps 5"); op = addarg(op, "-dp 2048"); - sprintf(op, " -ar %d", (int)(32*d)); + sprintf(op, " -ar %d", (int)(64*d)); op += strlen(op); sprintf(op, " -ms %.2g", asz/80.); op += strlen(op); @@ -774,7 +784,7 @@ char *po; case HIGH: po = addarg(po, vbool(PENUMBRAS) ? "-ps 1" : "-ps 3"); op = addarg(op, "-dp 4096"); - sprintf(op, " -ar %d", (int)(64*d)); + sprintf(op, " -ar %d", (int)(128*d)); op += strlen(op); sprintf(op, " -ms %.2g", asz/160.); op += strlen(op); @@ -795,13 +805,13 @@ char *po; overture = 0; switch (vscale(VARIABILITY)) { case LOW: - op = addarg(op, "-aa .15 -ad 256 -as 0"); + op = addarg(op, "-aa .125 -ad 512 -as 64"); break; case MEDIUM: - op = addarg(op, "-aa .125 -ad 512 -as 256"); + op = addarg(op, "-aa .1 -ad 1536 -as 768"); break; case HIGH: - op = addarg(op, "-aa .08 -ad 1024 -as 512"); + op = addarg(op, "-aa .075 -ad 4096 -as 2048"); break; } d = ambval(); @@ -897,7 +907,7 @@ register char *vs; upax = 1-'X'+UPPER(vval(UP)[1]); else upax = 1-'X'+vlet(UP); - if (upax < 1 | upax > 3) + if ((upax < 1) | (upax > 3)) badvalue(UP); if (vval(UP)[0] == '-') upax = -upax; @@ -920,7 +930,7 @@ register char *vs; zpos = -1; vs++; } viewtype = 'v'; - if (*vs == 'v' | *vs == 'l' | *vs == 'a' | *vs == 'h' | *vs == 'c') + if((*vs == 'v') | (*vs == 'l') | (*vs == 'a') | (*vs == 'h') | (*vs == 'c')) viewtype = *vs++; cp = viewopts; if ((!*vs || isspace(*vs)) && (xpos|ypos|zpos)) { /* got one! */ @@ -1031,7 +1041,7 @@ char *vn; /* returned view name */ return(specview(viewselect)); /* standard view? */ } mv = nvalue(VIEWS, n); /* use view n */ - if (vn != NULL & mv != NULL) { + if ((vn != NULL) & (mv != NULL)) { register char *mv2 = mv; if (*mv2 != '-') while (*mv2 && !isspace(*mv2)) @@ -1059,7 +1069,7 @@ again: goto again; } #endif - copystruct(&vwr, &stdview); + vwr = stdview; sscanview(&vwr, cp=vopts); /* set initial options */ while ((cp = strstr(cp, "-vf ")) != NULL && *atos(buf, sizeof(buf), cp += 4)) { @@ -1149,7 +1159,7 @@ char *opts, *po; badvalue(REPORT); } /* set up parallel rendering */ - if (nprocs > 1 & !vdef(ZFILE)) { + if ((nprocs > 1) & (!vdef(ZFILE))) { strcpy(rppopt, "-S 1 -PP pfXXXXXX"); pfile = rppopt+9; if (mktemp(pfile) == NULL) @@ -1254,7 +1264,7 @@ char *opts, *po; mvfile(rawfile, combuf); } else rmfile(rawfile); - finish_process(); /* leave if child */ + finish_process(); /* exit if child */ } wait_process(1); /* wait for children to finish */ if (pfile != NULL) { /* clean up rpict persistent mode */ @@ -1262,7 +1272,7 @@ char *opts, *po; fp = fopen(pfile, "r"); if (fp != NULL) { if (fscanf(fp, "%*s %d", &pid) != 1 || - kill(pid, 1) == -1) + kill(pid, 1) < 0) unlink(pfile); fclose(fp); } @@ -1306,11 +1316,7 @@ rmfile(fn) /* remove a file */ char *fn; { if (!silent) -#ifdef _WIN32 - printf("\tdel %s\n", fn); -#else - printf("\trm -f %s\n", fn); -#endif + printf("\t%s %s\n", DELCMD, fn); if (!nprocs) return(0); return(unlink(fn)); @@ -1321,11 +1327,7 @@ mvfile(fold, fnew) /* move a file */ char *fold, *fnew; { if (!silent) -#ifdef _WIN32 - printf("\trename %s %s\n", fold, fnew); -#else - printf("\tmv %s %s\n", fold, fnew); -#endif + printf("\t%s %s %s\n", RENAMECMD, fold, fnew); if (!nprocs) return(0); return(rename(fold, fnew)); @@ -1341,7 +1343,7 @@ next_process() /* fork the next process (max. nprocs if (nprocs <= 1) return(0); /* it's us or no one */ if (inchild()) { - fprintf(stderr, "%s: internal error 1 in spawn_process()\n", + fprintf(stderr, "%s: internal error 1 in next_process()\n", progname); quit(1); } @@ -1378,7 +1380,7 @@ int all; status = status>>8 & 0xff; --children_running; if (status != 0) { /* child's problem is our problem */ - if (ourstatus == 0 & children_running > 0) + if ((ourstatus == 0) & (children_running > 0)) fprintf(stderr, "%s: waiting for remaining processes\n", progname); ourstatus = status; @@ -1398,6 +1400,12 @@ wait_process(all) int all; { (void)all; /* no one to wait for */ +} +int +kill(pid, sig) /* win|unix_process.c should also wait and kill */ +int pid, sig; +{ + return 0; } #endif /* ! RHAS_FORK_EXEC */