From daa7fe6c32a6d6b1b8f0c1754acb0ab6bdbe9186 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sun, 6 Jan 2008 16:01:11 -0600 Subject: Add chvt from David Anders. --- toys/chvt.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 toys/chvt.c (limited to 'toys/chvt.c') diff --git a/toys/chvt.c b/toys/chvt.c new file mode 100644 index 00000000..46040685 --- /dev/null +++ b/toys/chvt.c @@ -0,0 +1,54 @@ +/* vi: set sw=4 ts=4: */ +/* + * chvt.c switch virtual terminals + * + * Copyright (C) 2008 David Anders + * + */ + +#include "toys.h" + +#define VT_ACTIVATE 0x5606 +#define VT_WAITACTIVE 0x5607 + +/* note get_console_fb() will need to be moved into a seperate lib section */ +int get_console_fd() +{ + int fd; + + fd = open("/dev/console", O_RDWR); + if (fd >= 0) + return fd; + + fd = open("/dev/vc/0", O_RDWR); + if (fd >= 0) + return fd; + + fd = open("/dev/tty", O_RDWR); + if (fd >= 0) + return fd; + + return -1; +} + +void chvt_main(void) +{ + int vtnum,fd; + + + if(!*toys.optargs) + return; + + vtnum=atoi(*toys.optargs); + + fd=get_console_fd(); + if (fd < 0) + return; + + if (ioctl(fd,VT_ACTIVATE,vtnum)) + return; + + if (ioctl(fd,VT_WAITACTIVE,vtnum)) + return; + +} -- cgit v1.2.3