Add vtallow(1) to enable or disable VT switch - ubase - suckless linux base utils
  HTML git clone git://git.suckless.org/ubase
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 4269d523e2c5cc65c89e5340a55febe72c3d3f49
   DIR parent 74c0abb6a2f9b8cac0653f1b96646aaf74b91a68
  HTML Author: sin <sin@2f30.org>
       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(-)
       ---
   DIR diff --git a/Makefile b/Makefile
       @@ -82,6 +82,7 @@ BIN = \
                umount            \
                unshare           \
                uptime            \
       +        vtallow           \
                watch             \
                who
        
   DIR 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;
       +}