date and time created 80/10/01 17:27:25 by bill
authorBill Joy <bill@ucbvax.Berkeley.EDU>
Thu, 2 Oct 1980 09:27:25 +0000 (01:27 -0800)
committerBill Joy <bill@ucbvax.Berkeley.EDU>
Thu, 2 Oct 1980 09:27:25 +0000 (01:27 -0800)
SCCS-vsn: usr.bin/mesg/mesg.c 4.1

usr/src/usr.bin/mesg/mesg.c [new file with mode: 0644]

diff --git a/usr/src/usr.bin/mesg/mesg.c b/usr/src/usr.bin/mesg/mesg.c
new file mode 100644 (file)
index 0000000..0b67a9f
--- /dev/null
@@ -0,0 +1,58 @@
+static char *sccsid = "@(#)mesg.c      4.1 (Berkeley) %G%";
+/*
+ * mesg -- set current tty to accept or
+ *     forbid write permission.
+ *
+ *     mesg [y] [n]
+ *             y allow messages
+ *             n forbid messages
+ */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+struct stat sbuf;
+
+char *tty;
+char *ttyname();
+
+main(argc, argv)
+char *argv[];
+{
+       int r=0;
+       tty = ttyname(2);
+       if (tty == 0)
+               exit(13);
+       if(stat(tty, &sbuf) < 0) error("cannot stat");
+       if(argc < 2) {
+               if(sbuf.st_mode & 02)
+                       fprintf(stderr,"is y\n");
+               else {  r=1;
+                       fprintf(stderr,"is n\n");
+               }
+       } else  switch(*argv[1]) {
+               case 'y':
+                       newmode(0622); break;
+
+               case 'n':
+                       newmode(0600); r=1; break;
+
+               default:
+                       error("usage: mesg [y] [n]");
+               }
+       exit(r);
+}
+
+error(s)
+char *s;
+{
+       fprintf(stderr,"mesg: %s\n",s);
+       exit(-1);
+}
+
+newmode(m)
+{
+       if(chmod(tty,m)<0)
+               error("cannot change mode");
+}