From 87f1661314476e96c0f4010070b92bad2aba67af Mon Sep 17 00:00:00 2001 From: Kalle Olavi Niemitalo Date: Sun, 13 Jan 2008 19:23:03 +0200 Subject: [PATCH] Bug 54: Don't force 8-bit characters and no parity. Actually, don't use the cfmakeraw function at all, and don't look for it during configure either. --- NEWS | 3 +++ configure.in | 2 +- src/osdep/osdep.c | 14 +++++--------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/NEWS b/NEWS index f0b1931d..b246ded6 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,9 @@ ELinks 0.13.GIT now: To be released as ELinks 0.13.0. +* Bug 54, Debian bug 338402: Don't force the terminal to 8 bits with + no parity. + ELinks 0.12.GIT now: -------------------- diff --git a/configure.in b/configure.in index 9a05ee14..09a4016c 100644 --- a/configure.in +++ b/configure.in @@ -290,7 +290,7 @@ AC_PROG_GCC_TRADITIONAL AC_FUNC_MEMCMP AC_FUNC_MMAP AC_FUNC_STRFTIME -AC_CHECK_FUNCS(atoll cfmakeraw gethostbyaddr herror strerror) +AC_CHECK_FUNCS(atoll gethostbyaddr herror strerror) AC_CHECK_FUNCS(popen uname access chmod alarm timegm mremap) AC_CHECK_FUNCS(strcasecmp strncasecmp strcasestr strstr strchr strrchr) AC_CHECK_FUNCS(memmove bcopy stpcpy strdup index isdigit mempcpy memrchr) diff --git a/src/osdep/osdep.c b/src/osdep/osdep.c index d7705bed..b4ea2963 100644 --- a/src/osdep/osdep.c +++ b/src/osdep/osdep.c @@ -805,20 +805,16 @@ unblock_stdin(void) void elinks_cfmakeraw(struct termios *t) { -#ifdef HAVE_CFMAKERAW - cfmakeraw(t); -#ifdef VMIN - t->c_cc[VMIN] = 1; /* cfmakeraw() is broken on AIX --mikulas */ -#endif -#else + /* Bug 54: Do not alter the character-size and parity bits in + * t->c_cflag. If they have unusual values, the terminal + * probably requires those and won't work if ELinks changes + * the flags. The cfmakeraw function would set 8-bit characters + * and no parity, so don't use that. */ t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON); t->c_oflag &= ~OPOST; t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN); - t->c_cflag &= ~(CSIZE|PARENB); - t->c_cflag |= CS8; t->c_cc[VMIN] = 1; t->c_cc[VTIME] = 0; -#endif } #if !defined(CONFIG_MOUSE) || (!defined(CONFIG_GPM) && !defined(CONFIG_SYSMOUSE) && !defined(OS2_MOUSE))