diff options
Diffstat (limited to 'usr.bin/mesg')
-rw-r--r-- | usr.bin/mesg/mesg.1 | 29 | ||||
-rw-r--r-- | usr.bin/mesg/mesg.c | 16 |
2 files changed, 28 insertions, 17 deletions
diff --git a/usr.bin/mesg/mesg.1 b/usr.bin/mesg/mesg.1 index 77a29a1..c9f6800 100644 --- a/usr.bin/mesg/mesg.1 +++ b/usr.bin/mesg/mesg.1 @@ -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 diff --git a/usr.bin/mesg/mesg.c b/usr.bin/mesg/mesg.c index d80acb6..dcd14c3 100644 --- a/usr.bin/mesg/mesg.c +++ b/usr.bin/mesg/mesg.c @@ -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); } |