summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--doc/coreutils.texi10
-rw-r--r--src/stty.c4
-rwxr-xr-xtests/misc/stty.sh5
4 files changed, 20 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 22fb81485..b6dab624c 100644
--- a/NEWS
+++ b/NEWS
@@ -105,6 +105,8 @@ GNU coreutils NEWS -*- outline -*-
split --line-bytes=SIZE, now only allocates memory as needed rather
than allocating SIZE bytes at program start.
+ stty now supports configuring "stick" (mark/space) parity where available.
+
** Build-related
factor now builds on aarch64 based systems [bug introduced in coreutils-8.20]
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index 3ae39d18c..035f2e67c 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -13792,6 +13792,16 @@ May be negated.
@cindex even parity
Set odd parity (even if negated). May be negated.
+@item cmspar
+@opindex cmspar
+@cindex constant parity
+@cindex stick parity
+@cindex mark parity
+@cindex space parity
+Use "stick" (mark/space) parity. If parodd is set, the parity bit is
+always 1; if parodd is not set, the parity bit is always zero.
+Non-POSIX@. May be negated.
+
@item cs5
@itemx cs6
@itemx cs7
diff --git a/src/stty.c b/src/stty.c
index e518839d5..c95217e88 100644
--- a/src/stty.c
+++ b/src/stty.c
@@ -205,6 +205,9 @@ static struct mode_info const mode_info[] =
{
{"parenb", control, REV, PARENB, 0},
{"parodd", control, REV, PARODD, 0},
+#ifdef CMSPAR
+ {"cmspar", control, REV, CMSPAR, 0},
+#endif
{"cs5", control, 0, CS5, CSIZE},
{"cs6", control, 0, CS6, CSIZE},
{"cs7", control, 0, CS7, CSIZE},
@@ -593,6 +596,7 @@ Control settings:\n\
[-]hupcl same as [-]hup\n\
[-]parenb generate parity bit in output and expect parity bit in input\n\
[-]parodd set odd parity (or even parity with '-')\n\
+ * [-]cmspar use \"stick\" (mark/space) parity\n\
"), stdout);
fputs (_("\
\n\
diff --git a/tests/misc/stty.sh b/tests/misc/stty.sh
index 2f9b9a3b8..8fe759246 100755
--- a/tests/misc/stty.sh
+++ b/tests/misc/stty.sh
@@ -52,7 +52,10 @@ for opt in $options; do
# other serial control settings give the same error. So skip them.
# Also on ppc*|sparc* glibc platforms 'icanon' gives the same error.
# See: http://debbugs.gnu.org/7228#14
- case $opt in parenb|parodd|cstopb|crtscts|cdtrdsr|icanon) continue;; esac
+ case $opt in
+ parenb|parodd|cmspar) continue;;
+ cstopb|crtscts|cdtrdsr|icanon) continue;;
+ esac
stty $opt || fail=1