From 37712f2a7bde02580b9dd2ab99ef99029ce8e987 Mon Sep 17 00:00:00 2001 From: Joerg Wunsch Date: Sun, 2 Jul 1995 08:54:27 +0000 Subject: [PATCH] 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. (Fixes PR #bin/573) Submitted by: peter@haywire.dialix.com (Peter Wemm) --- bin/stty/stty.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bin/stty/stty.c b/bin/stty/stty.c index d8ce2ffb76d..9d9f67970b0 100644 --- a/bin/stty/stty.c +++ b/bin/stty/stty.c @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: stty.c,v 1.3 1995/04/29 15:00:34 bde Exp $ + * $Id: stty.c,v 1.4 1995/05/30 00:07:28 rgrimes Exp $ */ #ifndef lint @@ -95,10 +95,12 @@ main(argc, argv) 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));