|
|
1.1 root 1: /*
2: * Copyright (c) 1987 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that the above copyright notice and this paragraph are
7: * duplicated in all such forms and that any documentation,
8: * advertising materials, and other materials related to such
9: * distribution and use acknowledge that the software was developed
10: * by the University of California, Berkeley. The name of the
11: * University may not be used to endorse or promote products derived
12: * from this software without specific prior written permission.
13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16: */
17:
18: #ifndef lint
19: char copyright[] =
20: "@(#) Copyright (c) 1987 Regents of the University of California.\n\
21: All rights reserved.\n";
22: #endif /* not lint */
23:
24: #ifndef lint
25: static char sccsid[] = "@(#)mesg.c 4.5 (Berkeley) 6/29/88";
26: #endif /* not lint */
27:
28: /*
29: * mesg -- set current tty to accept or
30: * forbid write permission.
31: *
32: * mesg [y] [n]
33: * y allow messages
34: * n forbid messages
35: */
36:
37: #include <sys/types.h>
38: #include <sys/stat.h>
39: #include <stdio.h>
40:
41: static char *tty;
42:
43: main(argc, argv)
44: int argc;
45: char **argv;
46: {
47: struct stat sbuf;
48: char *ttyname();
49:
50: if (!(tty = ttyname(2))) {
51: fputs("mesg: not a device in /dev.\n", stderr);
52: exit(-1);
53: }
54: if (stat(tty, &sbuf) < 0) {
55: perror("mesg");
56: exit(-1);
57: }
58: if (argc < 2) {
59: if (sbuf.st_mode & 020) {
60: fputs("is y\n", stderr);
61: exit(0);
62: }
63: fputs("is n\n", stderr);
64: exit(1);
65: }
66: #define OTHER_WRITE 020
67: switch(*argv[1]) {
68: case 'y':
69: newmode(sbuf.st_mode | OTHER_WRITE);
70: exit(0);
71: case 'n':
72: newmode(sbuf.st_mode &~ OTHER_WRITE);
73: exit(1);
74: default:
75: fputs("usage: mesg [y] [n]\n", stderr);
76: exit(-1);
77: }
78: /*NOTREACHED*/
79: }
80:
81: static
82: newmode(m)
83: u_short m;
84: {
85: if (chmod(tty, m) < 0) {
86: perror("mesg");
87: exit(-1);
88: }
89: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.