From: Johannes Schindelin Date: Tue, 10 Mar 2009 12:54:34 GMT Subject: Re: [PATCH] winansi: support ESC [ K (erase in line) Message-ID: In-Reply-To: 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