David Lawyer <[EMAIL PROTECTED]> writes:

> But if I start elinks, then these setting are apparently
> changed by elinks to -parenb and cs8.

I think I fixed this in ELinks 0.13.GIT.
Could you test the osdep.c part of the patch below?
If it works OK, I can then apply it to the 0.11 and 0.12 branches too.

commit 87f1661314476e96c0f4010070b92bad2aba67af
Author:     Kalle Olavi Niemitalo <[EMAIL PROTECTED]>
AuthorDate: Sun Jan 13 19:23:03 2008 +0200
Commit:     Kalle Olavi Niemitalo <[EMAIL PROTECTED]>
CommitDate: Sun Jan 13 19:26:00 2008 +0200

    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.

diff --git a/NEWS b/NEWS
index f0b1931..b246ded 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 9a05ee1..09a4016 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 d7705be..b4ea296 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))

Attachment: pgpXUFF9l8yMs.pgp
Description: PGP signature

Reply via email to