Initial public busybox upstream commit
[busybox4maemo] / console-tools / chvt.c
1 /* vi: set sw=4 ts=4: */
2 /*
3  * Mini chvt implementation for busybox
4  *
5  * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
6  *
7  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
8  */
9
10 #include "libbb.h"
11
12 /* From <linux/vt.h> */
13 enum {
14         VT_ACTIVATE = 0x5606,   /* make vt active */
15         VT_WAITACTIVE = 0x5607  /* wait for vt active */
16 };
17
18 int chvt_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
19 int chvt_main(int argc, char **argv)
20 {
21         int fd, num;
22
23         if (argc != 2) {
24                 bb_show_usage();
25         }
26
27         fd = get_console_fd();
28         num = xatou_range(argv[1], 1, 63);
29         /* double cast suppresses "cast to ptr from int of different size" */
30         xioctl(fd, VT_ACTIVATE, (void *)(ptrdiff_t)num);
31         xioctl(fd, VT_WAITACTIVE, (void *)(ptrdiff_t)num);
32         return EXIT_SUCCESS;
33 }