summaryrefslogtreecommitdiff
path: root/console-tools/fgconsole.c (plain)
blob: 019761726dfaa43a193dd6707aaf6d11f8a55536
1/* 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 *
7 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
8 */
9//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
19
20//usage:#define fgconsole_trivial_usage
21//usage: ""
22//usage:#define fgconsole_full_usage "\n\n"
23//usage: "Get active console"
24
25#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}
46