Made some progress here! I haven't tried all your suggestions yet, but please see below.
On Mon, Aug 01, 2016 at 10:06:49PM +0300, Dmitry Bogatov wrote: > > How insert this fancy letter "?"? I tried to `loadkeys es', but I > failed to locate this letter. My keyboard layout is Latin American Spanish: `loadkeys la-latin1' The "ñ" is one key to the right of "l" (in qwerty) (where the ";" key is in English layout). That is keycode 39. > > Also, let me ask you to check some of my wild guesses: > > - please, invoke `stty -a' in bad and good shells and tell, > if there is any difference. > - please, try to call 'reset' in bad shell and see, whether it helps > - please, change your shell to /bin/sh and tell, whether anything changes > (/bin/sh does not have .rc file, to make more clean experiment) Hmmm. /bin/sh works well in all the six shells!!! That is something. > - please apply following patch and tell, if anything changes I will have to learn how to apply patches first. Please, be patient. > > --- a/login.c > +++ b/login.c > @@ -45,17 +45,9 @@ void die(const char *message) { > struct termios oldtermios; > > static void echo_off() { > - struct termios foo; > - if (tcgetattr(0,&oldtermios)) > - die("tcgetattr failed"); > - foo=oldtermios; > - foo.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL); > - tcsetattr(0, TCSANOW, &foo); > } > > static void echo_on() { > - oldtermios.c_lflag |= ECHO | ECHOE | ECHOK; > - tcsetattr(0, TCSANOW, &oldtermios); > } > > main(int argc,char *argv[]) { > --- a/fgetty.c > +++ b/fgetty.c > @@ -32,11 +32,6 @@ void error(char *message,int exitcode) { > } > > static void echo_off() { > - struct termios foo; > - if (!tcgetattr(0,&foo)) { > - foo.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL); > - tcsetattr(0, TCSANOW, &foo); > - } > } > > int doutmp() { > > --- > --- > > -- > Accept: text/plain, text/x-diff > Accept-Language: eo,en,ru > X-Web-Site: sinsekvu.github.io >