Add vtallow(1) to enable or disable VT switch - ubase - suckless linux base uti… | |
git clone git://git.suckless.org/ubase | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 4269d523e2c5cc65c89e5340a55febe72c3d3f49 | |
parent 74c0abb6a2f9b8cac0653f1b96646aaf74b91a68 | |
Author: sin <[email protected]> | |
Date: Fri, 5 Dec 2014 15:04:37 +0000 | |
Add vtallow(1) to enable or disable VT switch | |
Diffstat: | |
M Makefile | 1 + | |
A vtallow.c | 52 +++++++++++++++++++++++++++++… | |
2 files changed, 53 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/Makefile b/Makefile | |
@@ -82,6 +82,7 @@ BIN = \ | |
umount \ | |
unshare \ | |
uptime \ | |
+ vtallow \ | |
watch \ | |
who | |
diff --git a/vtallow.c b/vtallow.c | |
@@ -0,0 +1,52 @@ | |
+/* See LICENSE file for copyright and license details. */ | |
+#include <sys/types.h> | |
+#include <sys/stat.h> | |
+#include <sys/ioctl.h> | |
+ | |
+#include <fcntl.h> | |
+#include <stdio.h> | |
+#include <string.h> | |
+#include <unistd.h> | |
+ | |
+#include "util.h" | |
+ | |
+#define CONSOLE "/dev/console" | |
+ | |
+#define VT_LOCKSWITCH 0x560B /* disallow vt switching */ | |
+#define VT_UNLOCKSWITCH 0x560C /* allow vt switching */ | |
+ | |
+static void | |
+usage(void) | |
+{ | |
+ eprintf("usage: vtallow n|y\n"); | |
+} | |
+ | |
+int | |
+main(int argc, char *argv[]) | |
+{ | |
+ int fd; | |
+ int allow; | |
+ | |
+ ARGBEGIN { | |
+ default: | |
+ usage(); | |
+ } ARGEND; | |
+ | |
+ if (argc != 1) | |
+ usage(); | |
+ | |
+ if (!strcmp(argv[0], "y")) | |
+ allow = 1; | |
+ else if (!strcmp(argv[0], "n")) | |
+ allow = 0; | |
+ else | |
+ usage(); | |
+ | |
+ if ((fd = open(CONSOLE, O_WRONLY)) < 0) | |
+ eprintf("open %s:", CONSOLE); | |
+ if (ioctl(fd, allow ? VT_UNLOCKSWITCH : VT_LOCKSWITCH) < 0) | |
+ eprintf("cannot %s VT switch:", | |
+ allow ? "enable" : "disable"); | |
+ close(fd); | |
+ return 0; | |
+} |