stty: add support for extproc/LINEMODE

Add support for the "extproc" option which is well described at:
http://lists.gnu.org/archive/html/bug-readline/2011-01/msg00004.html

* src/stty.c (usage): Describe the extproc option if either the
Linux EXTPROC local option is defined, or the equivalent
BSD TIOCEXT ioctl is defined.
(main): Make the separate ioctl call for extproc on BSD.
* doc/coreutils.texi (stty invocation): Describe the option,
and reference the related RFC 1116.
* NEWS: Mention the new feature.
This commit is contained in:
Pádraig Brady 2015-01-21 18:11:06 +00:00
parent cdd21d31a3
commit ed38d9d1ce
3 changed files with 35 additions and 3 deletions

3
NEWS
View File

@ -48,6 +48,9 @@ GNU coreutils NEWS -*- outline -*-
split accepts a new --separator option to select a record separator character
other than the default newline character.
stty allows setting the "extproc" option where supported, which is
a useful setting with high latency links.
** Changes in behavior
df no longer suppresses separate exports of the same remote device, as

View File

@ -14269,6 +14269,14 @@ the line as indicated by the @code{echoprt} and @code{echoe} settings,
instead of by the @code{echoctl} and @code{echok} settings.
Non-POSIX@.
May be negated.
@item extproc
@opindex extproc
Enable @samp{LINEMODE}, which is used to avoid echoing
each character over high latency links. See also
@uref{ftp://ftp.rfc-editor.org/in-notes/rfc1116.txt, Internet RFC 1116}.
Non-POSIX@.
May be negated.
@end table
@ -14311,7 +14319,7 @@ cread -ignbrk brkint -inlcr -igncr icrnl -ixoff
-iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr
-onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
ff0 isig icanon iexten echo echoe echok -echonl
-noflsh -xcase -tostop -echoprt echoctl echoke
-noflsh -xcase -tostop -echoprt echoctl echoke -extproc
@end example
@noindent

View File

@ -342,6 +342,9 @@ static struct mode_info const mode_info[] =
{"echoke", local, SANE_SET | REV, ECHOKE, 0},
{"crtkill", local, REV | OMIT, ECHOKE, 0},
#endif
#ifdef EXTPROC
{"extproc", local, SANE_UNSET | REV, EXTPROC, 0},
#endif
{"evenp", combination, REV | OMIT, 0, 0},
{"parity", combination, REV | OMIT, 0, 0},
@ -806,6 +809,11 @@ Local settings:\n\
fputs (_("\
* [-]echoprt echo erased characters backward, between '\\' and '/'\n\
"), stdout);
#endif
#if defined EXTPROC || defined TIOCEXT
fputs (_("\
* [-]extproc enable \"LINEMODE\"; useful with high latency links\n\
"), stdout);
#endif
fputs (_("\
[-]icanon enable erase, kill, werase, and rprnt special characters\n\
@ -892,8 +900,8 @@ Combination settings:\n\
-ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n\
-onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n\
isig icanon iexten echo echoe echok -echonl -noflsh\n\
-xcase -tostop -echoprt echoctl echoke, all special\n\
characters to their default values\n\
-xcase -tostop -echoprt echoctl echoke -extproc,\n\
all special characters to their default values\n\
"), stdout);
fputs (_("\
\n\
@ -1111,6 +1119,19 @@ main (int argc, char **argv)
speed_was_set = true;
require_set_attr = true;
}
#ifdef TIOCEXT
else if (STREQ (arg, "extproc") || STREQ (arg, "-extproc"))
{
/* This is the BSD interface to "extproc". */
int val = *arg != '-';
if (ioctl (STDIN_FILENO, TIOCEXT, &val) != 0)
{
error (EXIT_FAILURE, errno, _("%s: error setting %s"),
device_name, quote (arg));
}
}
#endif
#ifdef TIOCGWINSZ
else if (STREQ (arg, "rows"))
{