USL copyright
[unix-history] / usr.bin / mesg / mesg.c
CommitLineData
169d8a33
RG
1/*
2 * Copyright (c) UNIX System Laboratories, Inc. All or some portions
3 * of this file are derived from material licensed to the
4 * University of California by American Telephone and Telegraph Co.
5 * or UNIX System Laboratories, Inc. and are reproduced herein with
6 * the permission of UNIX System Laboratories, Inc.
7 *
8 * $Id$
9 */
15637ed4
RG
10/*
11 * Copyright (c) 1987 Regents of the University of California.
12 * All rights reserved.
13 *
14 * Redistribution and use in source and binary forms, with or without
15 * modification, are permitted provided that the following conditions
16 * are met:
17 * 1. Redistributions of source code must retain the above copyright
18 * notice, this list of conditions and the following disclaimer.
19 * 2. Redistributions in binary form must reproduce the above copyright
20 * notice, this list of conditions and the following disclaimer in the
21 * documentation and/or other materials provided with the distribution.
22 * 3. All advertising materials mentioning features or use of this software
23 * must display the following acknowledgement:
24 * This product includes software developed by the University of
25 * California, Berkeley and its contributors.
26 * 4. Neither the name of the University nor the names of its contributors
27 * may be used to endorse or promote products derived from this software
28 * without specific prior written permission.
29 *
30 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
31 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
32 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
33 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
34 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
35 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
36 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
37 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
38 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
39 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
40 * SUCH DAMAGE.
41 */
42
43#ifndef lint
44char copyright[] =
45"@(#) Copyright (c) 1987 Regents of the University of California.\n\
46 All rights reserved.\n";
47#endif /* not lint */
48
49#ifndef lint
50static char sccsid[] = "@(#)mesg.c 4.7 (Berkeley) 3/1/91";
51#endif /* not lint */
52
53/*
54 * mesg -- set current tty to accept or
55 * forbid write permission.
56 *
57 * mesg [y] [n]
58 * y allow messages
59 * n forbid messages
60 */
61
62#include <sys/types.h>
63#include <sys/stat.h>
64#include <stdio.h>
65
66static char *tty;
bf054078 67#define OTHER_WRITE 020
15637ed4
RG
68
69main(argc, argv)
70 int argc;
71 char **argv;
72{
73 struct stat sbuf;
74 char *ttyname();
75
76 if (!(tty = ttyname(2))) {
77 fputs("mesg: not a device in /dev.\n", stderr);
78 exit(-1);
79 }
80 if (stat(tty, &sbuf) < 0) {
81 perror("mesg");
82 exit(-1);
83 }
84 if (argc < 2) {
1a6bc87e 85 if (sbuf.st_mode & OTHER_WRITE) {
15637ed4
RG
86 fputs("is y\n", stderr);
87 exit(0);
88 }
89 fputs("is n\n", stderr);
90 exit(1);
91 }
15637ed4
RG
92 switch(*argv[1]) {
93 case 'y':
94 newmode(sbuf.st_mode | OTHER_WRITE);
95 exit(0);
96 case 'n':
97 newmode(sbuf.st_mode &~ OTHER_WRITE);
98 exit(1);
99 default:
1a6bc87e 100 fputs("usage: mesg [y|n]\n", stderr);
15637ed4
RG
101 exit(-1);
102 }
103 /*NOTREACHED*/
104}
105
106newmode(m)
107 u_short m;
108{
109 if (chmod(tty, m) < 0) {
110 perror("mesg");
111 exit(-1);
112 }
113}