diff options
author | Rob Landley <rob@landley.net> | 2008-01-06 16:01:11 -0600 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2008-01-06 16:01:11 -0600 |
commit | daa7fe6c32a6d6b1b8f0c1754acb0ab6bdbe9186 (patch) | |
tree | 8e3f85050016a4f83858eed4f2ef6d5528f1612c /toys/chvt.c | |
parent | 797a4c3734dab0d70ce6d485acbb4bf922e775c7 (diff) | |
download | toybox-daa7fe6c32a6d6b1b8f0c1754acb0ab6bdbe9186.tar.gz |
Add chvt from David Anders.
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; + +} |