NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: lib/48821: libedit EL_SETTY doesn't work



The following reply was made to PR lib/48821; it has been noted by GNATS.

From: YASUOKA Masahiko <yasuoka%iij.ad.jp@localhost>
To: christos%zoulas.com@localhost, gnats-bugs%NetBSD.org@localhost
Cc: lib-bug-people%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, 
netbsd-bugs%netbsd.org@localhost
Subject: Re: lib/48821: libedit EL_SETTY doesn't work
Date: Wed, 21 May 2014 17:57:33 +0900 (JST)

 On Wed, 21 May 2014 17:55:31 +0900 (JST)
 YASUOKA Masahiko <yasuoka%iij.ad.jp@localhost> wrote:
 > On Mon, 19 May 2014 13:50:01 +0000 (UTC)
 > christos%zoulas.com@localhost (Christos Zoulas) wrote:
 >>  While I like the refactoring of all tis duplicated code, the removal
 >>  of the conditional setting is undesirable.
 > 
 > I agree keeping the condition is safer, but I still cann't understand
 > what does the condition mean.
 > 
 >> It is meant to prevent the user for altering the state of the tty
 >> from a 3rd party.  Consider using the editor in the shell (which is
 >> used in /bin/sh). vi crashes and leaves the tty in non-canonical, no
 >> echo mode.
 > 
 > Yes,
 > 
 >>  With your change, the changes from vi get immediately reflected in
 >>  the editor.
 > 
 > The code can be simplified like below:
 > 
 >   tcsetattr(&ts);
 
 sorry, this should be
 
     tcgetattr(&ts);
 
 >   // ts = the current setting
 >   // ex = last termios for cooked mode
 >   // ed = last termios for rawmode
 > 
 >   if (ts != ex && ts != ed) {// the settings is changed by a 3rd party
 >      ex = ed = ts;    // adapt the change from the 3rd party
 >      ex |= setbits;   // adapt restriction from SETTY
 >      ex &= ~clrbits;  // same as above
 >      ed |= setbits;   // same as above
 >      ed &= ~clrbits;  // same as above
 >   }
 >   tcsetattr(&ed);     // reflect
 > 
 > My change was to remove the "if (..." condition.  So the removal of
 > the condition doesn't alter the behavior of "the changes from vi"
 > case.
 > 
 > But it alters the case in which the tty setting isn't changed.  In
 > that case, I think executing the conditional block isn't a problem,
 > since 'ts' is clean (because it's unchanged) and adapting the
 > restriction should be ok.
 


Home | Main Index | Thread Index | Old Index