Affect the first of stdin, stdout and stderr that is attached to a terminal.
Write status information to stdout instead of stderr. Exit status when an error occurs musn't be 1, that is reserved for indicating that messages are disabled. These changes bring mesg(1) up to SUSv3 conformance. Reviewed by: mike
This commit is contained in:
parent
b23de8a352
commit
17b3efd432
@ -32,7 +32,7 @@
|
||||
.\" @(#)mesg.1 8.1 (Berkeley) 6/6/93
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 6, 1993
|
||||
.Dd May 5, 2002
|
||||
.Dt MESG 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -44,15 +44,17 @@
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
utility is invoked by a users to control write access others
|
||||
have to the terminal device associated with the standard error
|
||||
output.
|
||||
utility is invoked by a user to control write access others
|
||||
have to a terminal device.
|
||||
Write access is allowed by default, and programs such as
|
||||
.Xr talk 1
|
||||
and
|
||||
.Xr write 1
|
||||
may display messages on the terminal.
|
||||
.Pp
|
||||
The first terminal device in the sequence of devices associated with standard
|
||||
input, standard output and standard error is affected.
|
||||
.Pp
|
||||
Options available:
|
||||
.Bl -tag -width flag
|
||||
.It Cm n
|
||||
@ -63,8 +65,8 @@ Permits messages to be displayed.
|
||||
.Pp
|
||||
If no arguments are given,
|
||||
.Nm
|
||||
displays the present message status to the standard error output.
|
||||
.Pp
|
||||
displays the present message status to the standard output.
|
||||
.Sh DIAGNOSTICS
|
||||
The
|
||||
.Nm
|
||||
utility exits with one of the following values:
|
||||
@ -77,15 +79,22 @@ Messages are not allowed.
|
||||
.It Li ">1"
|
||||
An error has occurred.
|
||||
.El
|
||||
.Sh FILES
|
||||
.Bl -tag -width /dev/[pt]ty[pq]? -compact
|
||||
.It Pa /dev/[pt]ty[pq]?
|
||||
.El
|
||||
.Sh COMPATIBILITY
|
||||
Previous versions of the
|
||||
.Nm
|
||||
utility wrote the message status to the standard error output and
|
||||
affected the terminal attached to standard error without first trying the
|
||||
standard input or output devices.
|
||||
.Sh SEE ALSO
|
||||
.Xr biff 1 ,
|
||||
.Xr talk 1 ,
|
||||
.Xr wall 1 ,
|
||||
.Xr write 1
|
||||
.Sh STANDARDS
|
||||
The
|
||||
.Nm
|
||||
utility conforms to
|
||||
.St -p1003.1-2001 .
|
||||
.Sh HISTORY
|
||||
A
|
||||
.Nm
|
||||
|
@ -79,28 +79,30 @@ main(argc, argv)
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
|
||||
if ((tty = ttyname(STDERR_FILENO)) == NULL)
|
||||
err(1, "ttyname");
|
||||
if ((tty = ttyname(STDIN_FILENO)) == NULL &&
|
||||
(tty = ttyname(STDOUT_FILENO)) == NULL &&
|
||||
(tty = ttyname(STDERR_FILENO)) == NULL)
|
||||
err(2, "ttyname");
|
||||
if (stat(tty, &sb) < 0)
|
||||
err(1, "%s", tty);
|
||||
err(2, "%s", tty);
|
||||
|
||||
if (*argv == NULL) {
|
||||
if (sb.st_mode & S_IWGRP) {
|
||||
(void)fprintf(stderr, "is y\n");
|
||||
(void)puts("is y");
|
||||
exit(0);
|
||||
}
|
||||
(void)fprintf(stderr, "is n\n");
|
||||
(void)puts("is n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
switch (*argv[0]) {
|
||||
case 'y':
|
||||
if (chmod(tty, sb.st_mode | S_IWGRP) < 0)
|
||||
err(1, "%s", tty);
|
||||
err(2, "%s", tty);
|
||||
exit(0);
|
||||
case 'n':
|
||||
if (chmod(tty, sb.st_mode & ~S_IWGRP) < 0)
|
||||
err(1, "%s", tty);
|
||||
err(2, "%s", tty);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user