--- ray/src/rt/rpict.c 1993/08/11 09:46:15 2.29 +++ ray/src/rt/rpict.c 1993/10/28 15:24:19 2.30 @@ -12,10 +12,16 @@ static char SCCSid[] = "$SunId$ LBL"; #include "ray.h" +#ifndef NIX #ifdef BSD #include #include +#else +#include +#include +#include #endif +#endif #include @@ -121,29 +127,43 @@ int code; } -#ifdef BSD +#ifndef NIX report() /* report progress */ { + char hostname[128]; + double u, s; +#ifdef BSD struct rusage rubuf; - double t; +#else + struct tms tbuf; +#endif + tlastrept = time((long *)0); +#ifdef BSD getrusage(RUSAGE_SELF, &rubuf); - t = (rubuf.ru_utime.tv_usec + rubuf.ru_stime.tv_usec) / 1e6; - t += rubuf.ru_utime.tv_sec + rubuf.ru_stime.tv_sec; + u = rubuf.ru_utime.tv_sec + rubuf.ru_utime.tv_usec/1e6; + s = rubuf.ru_stime.tv_sec + rubuf.ru_stime.tv_usec/1e6; getrusage(RUSAGE_CHILDREN, &rubuf); - t += (rubuf.ru_utime.tv_usec + rubuf.ru_stime.tv_usec) / 1e6; - t += rubuf.ru_utime.tv_sec + rubuf.ru_stime.tv_sec; + u += rubuf.ru_utime.tv_sec + rubuf.ru_utime.tv_usec/1e6; + s += rubuf.ru_stime.tv_sec + rubuf.ru_stime.tv_usec/1e6; +#else + times(&tbuf); + u = ( tbuf.tms_utime + tbuf.tms_cutime ) / CLK_TCK; + s = ( tbuf.tms_stime + tbuf.tms_cstime ) / CLK_TCK; +#endif + gethostname(hostname, sizeof(hostname)); - sprintf(errmsg, "%lu rays, %4.2f%% done after %5.4f CPU hours\n", - nrays, pctdone, t/3600.0); + sprintf(errmsg, + "%lu rays, %4.2f%% after %.3fu %.3fs %.3fr hours on %s\n", + nrays, pctdone, u/3600., s/3600., + (tlastrept-tstart)/3600., hostname); eputs(errmsg); - tlastrept = time((long *)0); } #else report() /* report progress */ { tlastrept = time((long *)0); - sprintf(errmsg, "%lu rays, %4.2f%% done after %5.4f hours\n", + sprintf(errmsg, "%lu rays, %4.2f%% after %5.4f hours\n", nrays, pctdone, (tlastrept-tstart)/3600.0); eputs(errmsg); signal(SIGCONT, report);