#include <9pm/u.h>
#include <9pm/libc.h>
char output[4096];
void add(char*, ...);
void error(char*);
void notifyf(void*, char*);
void
main(int argc, char *argv[])
{
int i;
uint pid;
double t[3], rt;
int r;
if(argc <= 1){
fprint(2, "usage: time command\n");
exits("usage");
}
rt = -realtime();
pid = proc(argv+1, 0, 1, 2, 0);
if(pid == 0)
error("proc");
r = procwait(pid, t);
/* windows 95 does not compute times */
if(t[2] == 0)
t[2] = rt + realtime();
add("%.3fu %.3fs %.3fr", t[0], t[1], t[2]);
add("\t");
for(i=1; i<argc; i++){
add("%s", argv[i], 0);
if(i>4){
add("...");
break;
}
}
if(r)
add(" # status=%d", r);
fprint(2, "%s\n", output);
if(r)
exits("error");
exits(0);
}
void
add(char *a, ...)
{
static beenhere=0;
va_list arg;
if(beenhere)
strcat(output, " ");
va_start(arg, a);
doprint(output+strlen(output), output+sizeof(output), a, arg);
va_end(arg);
beenhere++;
}
void
error(char *s)
{
char buf[ERRMAX];
errstr(buf);
fprint(2, "time: %s: %s\n", s, buf);
exits(s);
}
syntax highlighted by Code2HTML, v. 0.9.1