Bug 24063

Summary: /bin/stty ek doesnt work despite man page saying otherwise
Product: Base System Reporter: matt <matt>
Component: binAssignee: freebsd-bugs (Nobody) <bugs>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 4.2-RELEASE   
Hardware: Any   
OS: Any   

Description matt 2001-01-04 04:00:01 UTC
in migrating a bunch of irix users to a freebsd mail server, i had to sift through lots of old .cshrc/.login settings that were incompatible.  one such was stty ek.  i'm not sure whether this is a doc bug or a bin bug..  but the man page (of course, dated 1994...) says stty ek is valid, yet it looks like this:
EFS matt@sublime ~ > stty -g
gfmt1:cflag=4b00:iflag=2b02:lflag=200005cb:oflag=3:discard=f:dsusp=19:eof=4:eol=ff:eol2=ff:erase=7f:intr=3:kill=15:lnext=16:min=1:quit=1c:reprint=12:start=11:status=14:stop=13:susp=1a:time=0:werase=17:ispeed=9600:ospeed=9600
EFS matt@sublime ~ > stty ek
stty: illegal option -- ek
usage: stty [-a|-e|-g] [-f file] [options]

works fine as i typed it in solaris2.6/7/8, irix 6.x/5.x, rhat linux..
I couldn't find ek anywhere in /usr/src/bin/stty/key.c ... ?

the relevent man page snippet looks like this:

ek          Reset ERASE and KILL characters back to system defaults.

Fix: 

if backspace isn't working properly, 'stty erase <hit backspace>' works in a pinch.
How-To-Repeat: 'stty ek'
Comment 1 Seth Kingsley 2001-03-15 01:19:10 UTC
It looks like this inconsistancy existed even in 4.4BSD-Lite. Where was
this manual page stolen from? Regardless, here is a patch to add the
described functionality:

Index: key.c
===================================================================
RCS file: /ncvs/src/bin/stty/key.c,v
retrieving revision 1.11
diff -u -r1.11 key.c
--- key.c	1999/08/27 23:15:41	1.11
+++ key.c	2001/03/15 00:47:10
@@ -56,6 +56,7 @@
 void	f_cbreak __P((struct info *));
 void	f_columns __P((struct info *));
 void	f_dec __P((struct info *));
+void	f_ek __P((struct info *));
 void	f_everything __P((struct info *));
 void	f_extproc __P((struct info *));
 void	f_ispeed __P((struct info *));
@@ -82,6 +83,7 @@
 	{ "columns",	f_columns,	F_NEEDARG },
 	{ "cooked", 	f_sane,		0 },
 	{ "dec",	f_dec,		0 },
+	{ "ek",		f_ek,		0 },
 	{ "everything",	f_everything,	0 },
 	{ "extproc",	f_extproc,	F_OFFOK },
 	{ "ispeed",	f_ispeed,	F_NEEDARG },
@@ -179,6 +181,15 @@
 	ip->t.c_lflag &= ~ECHOPRT;
 	ip->t.c_lflag |= ECHOE|ECHOKE|ECHOCTL;
 	ip->t.c_iflag &= ~IXANY;
+	ip->set = 1;
+}
+
+void
+f_ek(ip)
+	struct info *ip;
+{
+	ip->t.c_cc[VERASE] = CERASE;
+	ip->t.c_cc[VKILL] = CKILL;
 	ip->set = 1;
 }
 

-- 
|| Seth Kingsley || BSDi/Open Source Division || sethk@osd.bsdi.com ||
Comment 2 dd freebsd_committer freebsd_triage 2001-08-23 23:31:13 UTC
State Changed
From-To: open->closed

A fix has been applied to -current, and will be MFC'd after 4.4.