Add check for writeable terminal

Submitted by: mark@grondar.za (and slightly modified)
This commit is contained in:
ache 1994-12-30 16:09:31 +00:00
parent 25a5fb9862
commit 319b403916
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();