From 319b403916158fbde498b6bd5e494ad91a122c22 Mon Sep 17 00:00:00 2001 From: ache Date: Fri, 30 Dec 1994 16:09:31 +0000 Subject: [PATCH] Add check for writeable terminal Submitted by: mark@grondar.za (and slightly modified) --- usr.bin/talk/init_disp.c | 19 +++++++++++++++++++ usr.bin/talk/talk.c | 2 ++ 2 files changed, 21 insertions(+) diff --git a/usr.bin/talk/init_disp.c b/usr.bin/talk/init_disp.c index 5bebcd8bbef4..ee9955600e28 100644 --- a/usr.bin/talk/init_disp.c +++ b/usr.bin/talk/init_disp.c @@ -42,11 +42,30 @@ static char sccsid[] = "@(#)init_disp.c 8.2 (Berkeley) 2/16/94"; #include #include +#include +#include +#include #include #include #include "talk.h" +/* + * Make sure the callee can write to the screen + */ +void check_writeable() +{ + char *tty; + struct stat sb; + + if ((tty = ttyname(STDERR_FILENO)) == NULL) + err(1, "ttyname"); + if (stat(tty, &sb) < 0) + err(1, "%s", tty); + if (!(sb.st_mode & S_IWGRP)) + errx(1, "The callee cannot write to this terminal, use \"mesg y\"."); +} + /* * Set up curses, catch the appropriate signals, * and build the various windows. diff --git a/usr.bin/talk/talk.c b/usr.bin/talk/talk.c index 702df162c134..8873e26afffe 100644 --- a/usr.bin/talk/talk.c +++ b/usr.bin/talk/talk.c @@ -55,6 +55,7 @@ static char sccsid[] = "@(#)talk.c 8.1 (Berkeley) 6/6/93"; * Modified to run under 4.1a by Clem Cole and Peter Moore * Modified to run between hosts by Peter Moore, 8/19/82 * Modified to run under 4.1c by Peter Moore 3/17/83 + * Fixed to not run with unwriteable terminals MRVM 28/12/94 */ main(argc, argv) @@ -62,6 +63,7 @@ main(argc, argv) char *argv[]; { get_names(argc, argv); + check_writeable(); init_display(); open_ctl(); open_sockt();