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