lchat

A line oriented chat front end for ii.
git clone git://git.suckless.org/lchat
Log | Files | Refs | README

commit afd762fabb08a2afc1230bec321756d7c2946764
parent 441c734ba664e797e585697e65eb18cf4ebaf97a
Author: Tom Schwindl <schwindl@posteo.de>
Date:   Sat, 17 Sep 2022 16:07:48 +0200

lchat: clean up terminal preparation

- reuse the value of `origin_term' instead of calling tcgetattr(3) twice
- change the following termios flags:
  IMAXBEL - is an extension and does not provide much "real" value
  OPOST - is mostly IB and thus not very useful
  ECHONL - only has an effect if ICANON is set, which isn't the case for us

Diffstat:
Mlchat.c | 16++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/lchat.c b/lchat.c @@ -25,7 +25,6 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <term.h> #include <termios.h> #include <unistd.h> @@ -248,21 +247,18 @@ main(int argc, char *argv[]) else printf("\033]0;%s\a", title); - /* preprate terminal reset on exit */ + /* prepare terminal reset on exit */ if (tcgetattr(fd, &origin_term) == -1) die("tcgetattr:"); + term = origin_term; + if (atexit(exit_handler) == -1) die("atexit:"); - /* prepare terminal */ - if (tcgetattr(fd, &term) == -1) - die("tcgetattr:"); - - /* TODO: clean up this block. copied from cfmakeraw(3) */ - term.c_iflag &= ~(IMAXBEL|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON); -// term.c_oflag &= ~OPOST; - term.c_lflag &= ~(ECHO|ECHONL|ICANON|IEXTEN); + term.c_iflag &= ~(BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON); + term.c_oflag &= ~OPOST; + term.c_lflag &= ~(ECHO|ICANON|IEXTEN); term.c_cflag &= ~(CSIZE|PARENB); term.c_cflag |= CS8; term.c_cc[VMIN] = 1;