Importing usr.bin/mesg

Replaces commands/mesg. No Minix-specific changes needed.

Change-Id: Ief22ad7f050f8083d0b43a4ea90b348c504d99a2
This commit is contained in:
Thomas Cort 2013-10-25 12:14:32 -04:00
parent 93ce9b1174
commit b36343fc42
10 changed files with 207 additions and 93 deletions

View File

@ -15,7 +15,7 @@ SUBDIR= add_route arp ash at backup btrace \
intr ipcrm ipcs irdpd isoread last \
less loadkeys loadramdisk logger look lp \
lpd lspci mail MAKEDEV \
mesg mined mkfifo \
mined mkfifo \
mount mt netconf \
nonamed od paste patch \
ping postinstall poweroff prep printroot \

View File

@ -1,4 +0,0 @@
PROG= mesg
MAN=
.include <bsd.prog.mk>

View File

@ -1,48 +0,0 @@
/* mesg - enable or disable communications. Author: John J. Ribera */
/*
* mesg - enable or disable communications.
*
* Usage: mesg [ y | n ]
*
* 'mesg n' will turn off group and world permissions of the
* user's terminal.
* 'mesg y' will enable group and world to write to the user's
* tty.
* mesg with no parameters will put the writeable status
* onto stdout.
*
* Author: John J. Ribera, Jr. 09/09/90
*/
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv []);
int main(argc, argv)
int argc;
char *argv[];
{
struct stat statb;
char *tty_name;
if ((tty_name = ttyname(0)) == NULL) exit(2);
if (stat(tty_name, &statb) == -1) exit(2);
if (--argc) {
if (*argv[1] == 'n') statb.st_mode = 0600;
else if (*argv[1] == 'y') statb.st_mode = 0620;
else {
fprintf(stderr, "mesg: usage: mesg [n|y]\n");
exit(2);
}
if (chmod(tty_name, statb.st_mode) == -1) exit(2);
} else printf((statb.st_mode & 020) ? "is y\n" : "is n\n");
if (statb.st_mode & 020) exit(0);
exit(1);
}

View File

@ -10,7 +10,7 @@ MAN= ash.1 at.1 \
isodir.1 isoinfo.1 isoread.1 \
last.1 loadfont.1 loadkeys.1 logger.1 \
look.1 lp.1 lspci.1 mail.1 \
mesg.1 mixer.1 \
mixer.1 \
mkproto.1 mount.1 mt.1 od.1 \
paste.1 ping.1 playwave.1 prep.1 \
profile.1 ps.1 rcp.1 recwave.1 \

View File

@ -1,38 +0,0 @@
.\" @(#)mesg.1 6.1 (Berkeley) 4/29/85
.\"
.TH MESG 1 "April 29, 1985"
.AT 3
.SH NAME
mesg \- permit or deny messages
.SH SYNOPSIS
.B mesg
[
.B n
] [
.B y
]
.SH DESCRIPTION
.B Mesg
with argument
.B n
forbids messages via
.B write
and
.BR talk (1)
by revoking non-user
write permission on the user's terminal.
.B Mesg
with argument
.B y
reinstates permission.
All by itself,
.B mesg
reports the current state without changing it.
.SH FILES
/dev/tty*
.SH "SEE ALSO"
.BR write (1),
.BR talk (1).
.SH DIAGNOSTICS
Exit status is 0 if messages are receivable,
1 if not, 2 on error.

View File

@ -180,6 +180,7 @@
2012/10/17 12:00:00,usr.bin/Makefile
2012/10/17 12:00:00,usr.bin/Makefile.inc
2010/07/07 21:24:34,usr.bin/man
2013/10/25 12:00:00,usr.bin/mesg
2010/10/15 05:46:48,usr.bin/mkdep
2009/08/15 20:44:56,usr.bin/mktemp
2012/10/17 12:00:00,usr.bin/nbperf

View File

@ -15,7 +15,7 @@ SUBDIR= \
head indent infocmp join \
ldd leave \
login logname lorder m4 \
machine make man \
machine make man mesg \
mkdep mktemp \
\
nbperf newgrp nice nl nohup nvi \

6
usr.bin/mesg/Makefile Normal file
View File

@ -0,0 +1,6 @@
# $NetBSD: Makefile,v 1.7 2009/04/14 22:15:23 lukem Exp $
# @(#)Makefile 8.1 (Berkeley) 6/6/93
PROG= mesg
.include <bsd.prog.mk>

89
usr.bin/mesg/mesg.1 Normal file
View File

@ -0,0 +1,89 @@
.\" $NetBSD: mesg.1,v 1.9 2009/03/11 13:54:05 joerg Exp $
.\"
.\" Copyright (c) 1987, 1990, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)mesg.1 8.1 (Berkeley) 6/6/93
.\"
.Dd June 6, 1993
.Dt MESG 1
.Os
.Sh NAME
.Nm mesg
.Nd display (do not display) messages from other users
.Sh SYNOPSIS
.Nm
.Op Cm n | Cm y
.Sh DESCRIPTION
The
.Nm
utility is invoked by a user to control write access others
have to the terminal device associated with the standard error
output.
Write access is allowed by default, and programs such as
.Xr talk 1
and
.Xr write 1
may display messages on the terminal.
.Pp
Options available:
.Bl -tag -width flag
.It Cm n
Disallows messages.
.It Cm y
Permits messages to be displayed.
.El
.Pp
If no arguments are given,
.Nm
displays the present message status to the standard error output.
.Pp
The
.Nm
utility exits with one of the following values:
.Pp
.Bl -tag -width flag -compact -offset indent
.It Li "\ 0"
Messages are allowed.
.It Li "\ 1"
Messages are not allowed.
.It Li "\*[Gt]1"
An error has occurred.
.El
.Sh FILES
.Bl -tag -width /dev/[pt]ty[pq]? -compact
.It Pa /dev/[pt]ty[pq]?
.El
.Sh SEE ALSO
.Xr biff 1 ,
.Xr talk 1 ,
.Xr write 1
.Sh HISTORY
A
.Nm
command appeared in
.At v6 .

108
usr.bin/mesg/mesg.c Normal file
View File

@ -0,0 +1,108 @@
/* $NetBSD: mesg.c,v 1.8 2008/07/21 14:19:24 lukem Exp $ */
/*
* Copyright (c) 1987, 1993
* The Regents of the University of California. All rights reserved.
* (c) UNIX System Laboratories, Inc.
* All or some portions of this file are derived from material licensed
* to the University of California by American Telephone and Telegraph
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
* the permission of UNIX System Laboratories, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
#ifndef lint
__COPYRIGHT("@(#) Copyright (c) 1987, 1993\
The Regents of the University of California. All rights reserved.");
#endif /* not lint */
#ifndef lint
#if 0
static char sccsid[] = "@(#)mesg.c 8.2 (Berkeley) 1/21/94";
#endif
__RCSID("$NetBSD: mesg.c,v 1.8 2008/07/21 14:19:24 lukem Exp $");
#endif /* not lint */
#include <sys/types.h>
#include <sys/stat.h>
#include <err.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{
struct stat sb;
char *tty;
int ch;
setprogname(*argv);
while ((ch = getopt(argc, argv, "")) != -1)
switch (ch) {
case '?':
default:
goto usage;
}
argc -= optind;
argv += optind;
if ((tty = ttyname(STDIN_FILENO)) == NULL &&
(tty = ttyname(STDOUT_FILENO)) == NULL &&
(tty = ttyname(STDERR_FILENO)) == NULL)
err(2, "ttyname");
if (stat(tty, &sb) == -1)
err(2, "%s", tty);
if (*argv == NULL) {
if (sb.st_mode & S_IWGRP) {
(void)fprintf(stderr, "is y\n");
return 0;
}
(void)fprintf(stderr, "is n\n");
return 1;
}
switch (*argv[0]) {
case 'y':
if (chmod(tty, sb.st_mode | S_IWGRP) == -1)
err(2, "%s", tty);
return 0;
case 'n':
if (chmod(tty, sb.st_mode & ~S_IWGRP) == -1)
err(2, "%s", tty);
return 1;
}
usage: (void)fprintf(stderr, "Usage: %s [y | n]\n", getprogname());
return 2;
}