char *
fmthtml(char *msg)
{
int wr[2], rd[2], n;
char buf[2048];
if(pipe(wr) == -1 || pipe(rd) == -1)
sysfatal("pipe: %r");
switch(fork()){
case -1:
sysfatal("fork: %r");
break;
case 0:
close(wr[0]);
close(rd[1]);
dup(wr[1], 0);
dup(rd[0], 1);
execl("/bin/htmlfmt", "htmlfmt -a", nil);
sysfatal("exec: %r");
break;
default:
close(wr[1]);
close(rd[0]);
write(wr[0], msg, strlen(msg));
close(wr[0]);
n = readn(rd[1], buf, sizeof(buf));
close(rd[1]);
if(n == -1)
sysfatal("read: %r\n");
buf[n] = 0;
return buf;
}
return buf;
}