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 (1.5 kb)" 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_NOEXEC(fgconsole, fgconsole, BB_DIR_USR_BIN, BB_SUID_DROP, fgconsole)) 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