Paul Eggert <[email protected]> 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
