| /* |
| * mesg.c The "mesg" utility. Gives / restrict access to |
| * your terminal by others. |
| * |
| * Usage: mesg [y|n]. |
| * Without arguments prints out the current settings. |
| */ |
| #include <stdio.h> |
| #include <sys/stat.h> |
| #include <stdlib.h> |
| #include <errno.h> |
| #include <unistd.h> |
| |
| char *Version = "@(#) mesg 1.0 08-12-92 MvS"; |
| |
| int main(int argc, char **argv) |
| { |
| struct stat st; |
| |
| if (!isatty(0)) { |
| /* Or should we look in /etc/utmp? */ |
| fprintf(stderr, "stdin: is not a tty"); |
| return(1); |
| } |
| |
| if (fstat(0, &st) < 0) { |
| perror("fstat"); |
| return(1); |
| } |
| if (argc < 2) { |
| printf("Is %s\n", ((st.st_mode & 022) == 022) ? "y" : "n"); |
| return(0); |
| } |
| if (argc > 2 || (argv[1][0] != 'y' && argv[1][0] != 'n')) { |
| fprintf(stderr, "Usage: mesg [y|n]\n"); |
| return(1); |
| } |
| if (argv[1][0] == 'y') |
| st.st_mode |= 022; |
| else |
| st.st_mode &= ~022; |
| fchmod(0, st.st_mode); |
| return(0); |
| } |