Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Jun 1995 11:50:01 -0700
From:      peter@haywire.dialix.com (Peter Wemm)
To:        freebsd-bugs
Subject:   bin/573: /bin/stty gives obscure error message on non-tty stdin
Message-ID:  <199506281850.LAA17756@freefall.cdrom.com>
In-Reply-To: Your message of Thu, 29 Jun 1995 02:46:45 %2B0800 <199506281846.CAA06073@jhome.DIALix.COM>

next in thread | previous in thread | raw e-mail | index | archive | help

>Number:         573
>Category:       bin
>Synopsis:       /bin/stty gives obscure error message on non-tty stdin
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs (FreeBSD bugs mailing list)
>State:          open
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jun 28 11:50:00 1995
>Originator:     Peter Wemm
>Organization:
DIALix Services
>Release:        FreeBSD 2.0-BUILT-19950626 i386
>Environment:

FreeBSD-current
FreeBSD jhome.DIALix.COM 2.0-BUILT-19950626 FreeBSD 2.0-BUILT-19950626 #7: Mon Jun 26 04:47:14 WST 1995     pwroot@jhome.DIALix.COM:/usr/src/sys/compile/JHOME  i386

>Description:

stty fails with a non-obvious error message if it's run on a non-tty stream,
such as a rsh or vi pipeline.

The error message is:
stty: TIOCGETD: Operation not supported

It's immediately obvious to the knowledgable hacker type, but not
exactly comforting to the user who's not native to unix.  It's especially
confusing if there's a stty command in their .cshrc and it's showing up
on rsh output.

>How-To-Repeat:

rsh localhost stty

>Fix:
	
I suggest a slight rewording, for example:

stty: tcgetattr: not running on a terminal: Operation not supported

There surely are better messages...

Note that this is a REAL LOW priority.

--- stty.c.dist	Tue May 30 17:51:44 1995
+++ stty.c	Thu Jun 29 02:30:23 1995
@@ -95,10 +95,12 @@
 args:	argc -= optind;
 	argv += optind;
 
+	if (tcgetattr(i.fd, &i.t) < 0) {
+		warn("tcgetattr: not running on a terminal");
+		exit(1);
+	}
 	if (ioctl(i.fd, TIOCGETD, &i.ldisc) < 0)
 		err(1, "TIOCGETD");
-	if (tcgetattr(i.fd, &i.t) < 0)
-		err(1, "tcgetattr");
 	if (ioctl(i.fd, TIOCGWINSZ, &i.win) < 0)
 		warn("TIOCGWINSZ: %s\n", strerror(errno));
 
>Audit-Trail:
>Unformatted:





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199506281850.LAA17756>