diff options
Diffstat (limited to 'toys/chvt.c')
-rw-r--r-- | toys/chvt.c | 54 |
1 files changed, 54 insertions, 0 deletions
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 <danders@amltd.com> + * + */ + +#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; + +} |