Re: [PATCH] winansi: support ESC [ K (erase in line)
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Mar 10, 2009, 12:54 UTC
- Message-ID
- <alpine.DEB.1.00.0903101352240.14295@intel-tinevez-2-302>
- In-Reply-To
- <eaa105840903100529lc29664hd6e6fde29e06844a@mail.gmail.com>
Hi,
On Tue, 10 Mar 2009, Peter Harris wrote:
Show 18 quoted lines
> 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