Hi, On Tue, 10 Mar 2009, Peter Harris wrote: > On Mon, Mar 9, 2009 at 8:41 PM, Johannes Schindelin wrote: > > > +int winansi_write(int fd, const void *buf, size_t len) > > +{ > > + if (isatty(fd)) { > > + init(); > > + if (console) > > + return ansi_emulate((const char *)buf, len, > > + fd == 2 ? stderr : stdout); > > + } > > + return write(fd, buf, len); > > +} > > Switching an unbuffered write to a buffered fwrite makes me a little > nervous. In practice, all writes probably go through this function, so > it doesn't matter. And if the write is going somewhere it matters, it > likely fails isatty anyway. But I would still be less nervous with an > fflush() after ansi_emulate. That would make the code substantially more messy, though. Besides, half of it is already there: when encountering an ANSI sequence, your code already fflush()es the fd before setting the new attributes. And stderr does not need the fflush() anyway. Ciao, Dscho