Add check for writeable terminal

Submitted by: mark@grondar.za (and slightly modified)
This commit is contained in:
Andrey A. Chernov 1994-12-30 16:09:31 +00:00
parent 54b77925ee
commit f3392428da
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=5297
2 changed files with 21 additions and 0 deletions

View File

@ -42,11 +42,30 @@ static char sccsid[] = "@(#)init_disp.c 8.2 (Berkeley) 2/16/94";
#include <sys/ioctl.h>
#include <sys/ioctl_compat.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <signal.h>
#include <err.h>
#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.

View File

@ -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();