blob: 019761726dfaa43a193dd6707aaf6d11f8a55536 [file] [log] [blame]
Grigory Batalovad7a5d42010-05-23 23:22:10 +02001/* vi: set sw=4 ts=4: */
2/*
3 * Mini fgconsole implementation for busybox
4 *
5 * Copyright (C) 2010 by Grigory Batalov <bga@altlinux.org>
6 *
Denys Vlasenko0ef64bd2010-08-16 20:14:46 +02007 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
Grigory Batalovad7a5d42010-05-23 23:22:10 +02008 */
Denys Vlasenko6d932992016-11-23 10:39:27 +01009//config:config FGCONSOLE
10//config: bool "fgconsole"
11//config: default y
12//config: select PLATFORM_LINUX
13//config: help
14//config: This program prints active (foreground) console number.
15
16//applet:IF_FGCONSOLE(APPLET(fgconsole, BB_DIR_USR_BIN, BB_SUID_DROP))
17
18//kbuild:lib-$(CONFIG_FGCONSOLE) += fgconsole.o
Grigory Batalovad7a5d42010-05-23 23:22:10 +020019
Pere Orga55068c42011-03-27 23:42:28 +020020//usage:#define fgconsole_trivial_usage
21//usage: ""
22//usage:#define fgconsole_full_usage "\n\n"
23//usage: "Get active console"
24
Grigory Batalovad7a5d42010-05-23 23:22:10 +020025#include "libbb.h"
26
27/* From <linux/vt.h> */
28struct vt_stat {
29 unsigned short v_active; /* active vt */
30 unsigned short v_signal; /* signal to send */
31 unsigned short v_state; /* vt bitmask */
32};
33enum { VT_GETSTATE = 0x5603 }; /* get global vt state info */
34
35int fgconsole_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
36int fgconsole_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
37{
38 struct vt_stat vtstat;
39
40 vtstat.v_active = 0;
41 xioctl(get_console_fd_or_die(), VT_GETSTATE, &vtstat);
42 printf("%d\n", vtstat.v_active);
43
44 return EXIT_SUCCESS;
45}