aboutsummaryrefslogtreecommitdiff
path: root/toys/pending/deallocvt.c
diff options
context:
space:
mode:
Diffstat (limited to 'toys/pending/deallocvt.c')
-rw-r--r--toys/pending/deallocvt.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/toys/pending/deallocvt.c b/toys/pending/deallocvt.c
new file mode 100644
index 00000000..8ac67016
--- /dev/null
+++ b/toys/pending/deallocvt.c
@@ -0,0 +1,37 @@
+/* deallocvt.c - Deallocate virtual terminal(s)
+ *
+ * Copyright 2014 Vivek Kumar Bhagat <vivek.bhagat89@gmail.com>
+ *
+ * No Standard.
+
+USE_DEALLOCVT(NEWTOY(deallocvt, ">1", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_NEEDROOT))
+
+config DEALLOCVT
+ bool "deallocvt"
+ depends on OPENVT
+ default n
+ help
+ usage: deallocvt [N]
+
+ Deallocate unused virtual terminal /dev/ttyN
+ default value of N is 0, deallocate all unused consoles
+*/
+
+#include "toys.h"
+#include <linux/vt.h>
+
+void deallocvt_main(void)
+{
+ int fd;
+
+ // 0 : deallocate all unused consoles
+ int vt_num = 0;
+
+ if (toys.optargs[0])
+ vt_num = atolx_range(toys.optargs[0], 1, 63);
+
+ fd = find_console_fd();
+ if (fd < 0) error_exit("can't open console");
+
+ xioctl(fd, VT_DISALLOCATE, (void *)(ptrdiff_t)vt_num);
+}