xref: /original-bsd/usr.bin/biff/biff.c (revision 0842ddeb)
1 /*
2  * Copyright (c) 1980, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  */
7 
8 #ifndef lint
9 static char copyright[] =
10 "@(#) Copyright (c) 1980, 1993\n\
11 	The Regents of the University of California.  All rights reserved.\n";
12 #endif /* not lint */
13 
14 #ifndef lint
15 static char sccsid[] = "@(#)biff.c	8.2 (Berkeley) 04/29/95";
16 #endif /* not lint */
17 
18 #include <sys/types.h>
19 #include <sys/stat.h>
20 
21 #include <err.h>
22 #include <errno.h>
23 #include <stdio.h>
24 #include <stdlib.h>
25 #include <string.h>
26 #include <unistd.h>
27 
28 static void usage __P((void));
29 
30 int
31 main(argc, argv)
32 	int argc;
33 	char *argv[];
34 {
35 	struct stat sb;
36 	int ch;
37 	char *name;
38 
39 	while ((ch = getopt(argc, argv, "")) != EOF)
40 		switch(ch) {
41 		case '?':
42 		default:
43 			usage();
44 		}
45 	argc -= optind;
46 	argv += optind;
47 
48 	if ((name = ttyname(STDERR_FILENO)) == NULL)
49 		err(2, "tty");
50 
51 	if (stat(name, &sb))
52 		err(2, "stat");
53 
54 	if (*argv == NULL) {
55 		(void)printf("is %s\n", sb.st_mode&0100 ? "y" : "n");
56 		exit(sb.st_mode & 0100 ? 0 : 1);
57 	}
58 
59 	switch(argv[0][0]) {
60 	case 'n':
61 		if (chmod(name, sb.st_mode & ~0100) < 0)
62 			err(2, name);
63 		break;
64 	case 'y':
65 		if (chmod(name, sb.st_mode | 0100) < 0)
66 			err(2, name);
67 		break;
68 	default:
69 		usage();
70 	}
71 	exit(sb.st_mode & 0100 ? 0 : 1);
72 }
73 
74 static void
75 usage()
76 {
77 	(void)fprintf(stderr, "usage: biff [y | n]\n");
78 	exit(2);
79 }
80