1 static char *sccsid = "@(#)mesg.c 4.1 (Berkeley) 10/01/80"; 2 /* 3 * mesg -- set current tty to accept or 4 * forbid write permission. 5 * 6 * mesg [y] [n] 7 * y allow messages 8 * n forbid messages 9 */ 10 11 #include <stdio.h> 12 #include <sys/types.h> 13 #include <sys/stat.h> 14 15 struct stat sbuf; 16 17 char *tty; 18 char *ttyname(); 19 20 main(argc, argv) 21 char *argv[]; 22 { 23 int r=0; 24 tty = ttyname(2); 25 if (tty == 0) 26 exit(13); 27 if(stat(tty, &sbuf) < 0) error("cannot stat"); 28 if(argc < 2) { 29 if(sbuf.st_mode & 02) 30 fprintf(stderr,"is y\n"); 31 else { r=1; 32 fprintf(stderr,"is n\n"); 33 } 34 } else switch(*argv[1]) { 35 case 'y': 36 newmode(0622); break; 37 38 case 'n': 39 newmode(0600); r=1; break; 40 41 default: 42 error("usage: mesg [y] [n]"); 43 } 44 exit(r); 45 } 46 47 error(s) 48 char *s; 49 { 50 fprintf(stderr,"mesg: %s\n",s); 51 exit(-1); 52 } 53 54 newmode(m) 55 { 56 if(chmod(tty,m)<0) 57 error("cannot change mode"); 58 } 59