[FFmpeg-devel] [PATCH] ffmpeg: modify tty state when stderr is redirected
Michael Niedermayer
michael at niedermayer.cc
Thu Jul 30 14:43:01 CEST 2015
On Wed, Jul 29, 2015 at 05:28:16PM -0400, Ganesh Ajjanagadde wrote:
> On Wed, Jul 29, 2015 at 3:27 PM, Michael Niedermayer
> <michael at niedermayer.cc> wrote:
> > On Wed, Jul 29, 2015 at 02:43:52PM -0400, Ganesh Ajjanagadde wrote:
> >> On Mon, Jul 27, 2015 at 9:56 AM, Ganesh Ajjanagadde
> >> <gajjanagadde at gmail.com> wrote:
> >> > This fixes Ticket2964
> >> >
> >> > Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
> >> > ---
> >> > ffmpeg.c | 2 +-
> >> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >> >
> >> > diff --git a/ffmpeg.c b/ffmpeg.c
> >> > index 751c7d3..98f812e 100644
> >> > --- a/ffmpeg.c
> >> > +++ b/ffmpeg.c
> >> > @@ -372,7 +372,7 @@ void term_init(void)
> >> > struct termios tty;
> >> > int istty = 1;
> >> > #if HAVE_ISATTY
> >> > - istty = isatty(0) && isatty(2);
> >> > + istty = isatty(0);
> >> > #endif
> >> > if (istty && tcgetattr (0, &tty) == 0) {
> >> > oldtty = tty;
> >>
> >> ping
> >
> > i dont mind applying this but i dont remember why it was there
> > so this might break somethig and someone might then have to revert
>
> See the long discussion I had (with my initial patch series) for full details.
> A short summary is as follows:
> in order to accept "q" and other stuff, ffmpeg has to change the terminal mode.
> Once terminal mode is changed, on event of "hard" signal like SIGSEGV,
> it is not the responsibility of ffmpeg to clean up and restore the
> terminal state
> that now appears as messed up.
> I had a patch to do this, but this requires registering signal handler
> for such signals,
> and others had valid objections since the core dump is no longer clean.
> Thus, terminal restoration should be handled by the shell.
> Fortunately, zsh has such functionality (thanks Nicolas for pointing
> this out!) via "ttyctl -f"
> to "freeze" terminal, i.e prevent any process from damaging the
> terminal state on exit.
> In bash it is harder to do this; AFAIK requires manual intervention.
>
> Unless fate tests redirect 2(stderr) and do not redirect 0(stdin),
> functionality is identical.
> Even otherwise, by above argument, I think this is the right thing to do.
patch applied
note, if something breaks, ill revert this one, but hopefully it
will work fine
Thanks
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Avoid a single point of failure, be that a person or equipment.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150730/b7679278/attachment.sig>
More information about the ffmpeg-devel
mailing list