zsh-workers
 help / color / mirror / code / Atom feed
From: Peter Stephenson <pws@csr.com>
To: zsh-workers@sunsite.dk (Zsh hackers list)
Subject: Re: PATCH: turn off baud rate compensation by default
Date: Wed, 7 Feb 2007 16:46:51 +0000	[thread overview]
Message-ID: <20070207164651.d550c71a.pws@csr.com> (raw)
In-Reply-To: <070207082055.ZM15518@torch.brasslantern.com>

Bart Schaefer <schaefer@brasslantern.com> wrote:
> However, I suggest that the new default be for BAUD to not be set at
> all, rather than set to zero.

That seems reasonable:  I'd vaguely thought the parameter was special, but
it isn't, it's read by getiparam() at the start of zle which defaults to
returning zero anyway.  Also there's no remaining use of getbaudrate().

We *could* make it magic, so setting it to a negative value calls
getbaudrate() to get the value, but I think that's probably overkill.
(Then the parameter would have to be special, at least if we wanted
the effect to be apparent when it was read.  Alternatively we
could just put the getbaudrate() where zle reads the value, but then
the user can't see what it is.)

Index: Doc/Zsh/params.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/params.yo,v
retrieving revision 1.35
diff -u -r1.35 params.yo
--- Doc/Zsh/params.yo	30 Oct 2006 10:37:17 -0000	1.35
+++ Doc/Zsh/params.yo	7 Feb 2007 16:43:01 -0000
@@ -744,17 +744,16 @@
 )
 vindex(BAUD)
 item(tt(BAUD))(
-The baud rate of the current connection.  Used by the line editor
-update mechanism to compensate for a slow terminal by delaying
-updates until necessary.  This may be profitably set to a lower value
-in some circumstances, e.g.
-for slow modems dialing into a communications server which is connected
-to a host via a fast link; in this case, this variable
-would be set by default to the speed of the fast link, and not
-the modem.
-This parameter should be set to the baud
-rate of the slowest part of the link for best performance. The compensation
-mechanism can be turned off by setting the variable to zero.
+The rate in bits per second at which data reaches the terminal.
+The line editor will use this value in order to compensate for a slow
+terminal by delaying updates to the display until necessary.  If the
+parameter is unset or the value is zero the compensation mechanism is
+turned off.  The parameter is not set by default.
+
+This may be profitably set in some circumstances, e.g.
+for slow modems dialing into a communications server, or on a slow wide
+area network.  This parameter should be set to the baud
+rate of the slowest part of the link for best performance.
 )
 vindex(cdpath)
 vindex(CDPATH)
Index: Src/params.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/params.c,v
retrieving revision 1.122
diff -u -r1.122 params.c
--- Src/params.c	6 Feb 2007 21:47:55 -0000	1.122
+++ Src/params.c	7 Feb 2007 16:43:01 -0000
@@ -640,9 +640,16 @@
     setiparam("LOGCHECK", 60);
     setiparam("KEYTIMEOUT", 40);
     setiparam("LISTMAX", 100);
-#ifdef HAVE_SELECT
-    setiparam("BAUD", getbaudrate(&shttyinfo));  /* get the output baudrate */
-#endif
+    /*
+     * We used to get the output baud rate here.  However, that's
+     * pretty irrelevant to a terminal on an X display and can lead
+     * to unnecessary delays if it's wrong (which it probably is).
+     * Furthermore, even if the output is slow it's very likely
+     * to be because of WAN delays, not covered by the output
+     * baud rate.
+     * So allow the user to set it in the special cases where it's
+     * useful.
+     */
     setsparam("TMPPREFIX", ztrdup(DEFAULT_TMPPREFIX));
     setsparam("TIMEFMT", ztrdup(DEFAULT_TIMEFMT));
     setsparam("WATCHFMT", ztrdup(default_watchfmt));
Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.154
diff -u -r1.154 utils.c
--- Src/utils.c	7 Feb 2007 10:18:31 -0000	1.154
+++ Src/utils.c	7 Feb 2007 16:43:02 -0000
@@ -3435,108 +3435,6 @@
     return arg;
 }
 
-/* Return the output baudrate */
-
-#ifdef HAVE_SELECT
-/**/
-long
-getbaudrate(struct ttyinfo *shttyinfo)
-{
-    long speedcode;
-
-#ifdef HAS_TIO
-# if defined(HAVE_TCGETATTR) && defined(HAVE_TERMIOS_H)
-    speedcode = cfgetospeed(&shttyinfo->tio);
-# else
-    speedcode = shttyinfo->tio.c_cflag & CBAUD;
-# endif
-#else
-    speedcode = shttyinfo->sgttyb.sg_ospeed;
-#endif
-
-    switch (speedcode) {
-    case B0:
-	return (0L);
-    case B50:
-	return (50L);
-    case B75:
-	return (75L);
-    case B110:
-	return (110L);
-    case B134:
-	return (134L);
-    case B150:
-	return (150L);
-    case B200:
-	return (200L);
-    case B300:
-	return (300L);
-    case B600:
-	return (600L);
-#ifdef _B900
-    case _B900:
-	return (900L);
-#endif
-    case B1200:
-	return (1200L);
-    case B1800:
-	return (1800L);
-    case B2400:
-	return (2400L);
-#ifdef _B3600
-    case _B3600:
-	return (3600L);
-#endif
-    case B4800:
-	return (4800L);
-#ifdef _B7200
-    case _B7200:
-	return (7200L);
-#endif
-    case B9600:
-	return (9600L);
-#ifdef B19200
-    case B19200:
-	return (19200L);
-#else
-# ifdef EXTA
-    case EXTA:
-	return (19200L);
-# endif
-#endif
-#ifdef B38400
-    case B38400:
-	return (38400L);
-#else
-# ifdef EXTB
-    case EXTB:
-	return (38400L);
-# endif
-#endif
-#ifdef B57600
-    case B57600:
-	return (57600L);
-#endif
-#ifdef B115200
-    case B115200:
-	return (115200L);
-#endif
-#ifdef B230400
-    case B230400:
-	return (230400L);
-#endif
-#ifdef B460800
-    case B460800:
-	return (460800L);
-#endif
-    default:
-	if (speedcode >= 100)
-	    return speedcode;
-	break;
-    }
-    return (0L);
-}
-#endif
 
 /* Escape tokens and null characters.  Buf is the string which should be     *
  * escaped.  len is the length of the string.  If len is -1, buf should be   *
Index: Src/Zle/zle_main.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_main.c,v
retrieving revision 1.94
diff -u -r1.94 zle_main.c
--- Src/Zle/zle_main.c	8 Nov 2006 10:38:06 -0000	1.94
+++ Src/Zle/zle_main.c	7 Feb 2007 16:43:02 -0000
@@ -1074,6 +1074,7 @@
     Thingy initthingy;
 
 #if defined(HAVE_POLL) || defined(HAVE_SELECT)
+    /* may not be set, but that's OK since getiparam() returns 0 == off */
     baud = getiparam("BAUD");
     costmult = (baud) ? 3840000L / baud : 0;
 #endif



-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php

To get further information regarding CSR, please visit our Investor Relations page at http://ir.csr.com/csr/about/overview


      reply	other threads:[~2007-02-07 16:49 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-07 11:43 Peter Stephenson
2007-02-07 16:20 ` Bart Schaefer
2007-02-07 16:46   ` Peter Stephenson [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070207164651.d550c71a.pws@csr.com \
    --to=pws@csr.com \
    --cc=zsh-workers@sunsite.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).