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> */
13enum {
14	VT_ACTIVATE = 0x5606,   /* make vt active */
15	VT_WAITACTIVE = 0x5607  /* wait for vt active */
16};
17
18int chvt_main(int argc, char **argv);
19int 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}
34