GNU bug report logs - #20062
[PATCH] diff: add support for --color

Previous Next

Package: diffutils;

Reported by: Giuseppe Scrivano <gscrivan <at> redhat.com>

Date: Sun, 8 Mar 2015 21:57:02 UTC

Severity: normal

Tags: patch

Done: Jim Meyering <jim <at> meyering.net>

Bug is archived. No further changes may be made.

Full log


Message #158 received at 20062 <at> debbugs.gnu.org (full text, mbox):

From: Giuseppe Scrivano <gscrivan <at> redhat.com>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: Eric Blake <eblake <at> redhat.com>, 20062 <at> debbugs.gnu.org
Subject: Re: [bug-diffutils] bug#20062: bug#20062: bug#20062: bug#20062:
 [PATCH] diff: add support for --color
Date: Sat, 12 Sep 2015 10:54:24 +0200
Paul Eggert <eggert <at> cs.ucla.edu> writes:

> Eric Blake wrote:
>> It seems like the only safe way is to block
>> TSTP except for in places where you know that you do NOT have pending
>> data that would mess with the terminal, even if the cost of getting the
>> process to a point where it will actually stop in response to the user
>> request takes longer.
>
> That's one way to do it, yes.  In practice, though, it's easier (and
> probably faster) to do what GNU ls does, namely to have the the signal
> handler just set a volatile flag, and to periodically inspect the flag
> during normal computation in places where you can easily arrange for
> the terminal to be in a known state before acting on the signal.

in a previous version of the patch, I was blocking signals when diff
starts using colored output and re-enable them again once exiting from a
colored context, but it was rejected because it could block indefinitely
on long lines.  Would block signals between a set_*_color_context and
reset_color_context be enough or do we need more granularity (there are
many places where printf is used in the code)?

Thanks,
Giuseppe




This bug report was last modified 8 years and 78 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.