aboutsummaryrefslogtreecommitdiff
path: root/console-tools
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-09-22 08:18:41 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-09-22 08:18:41 +0000
commitae843e9cc8984a420b44648d0d1f5166c987a158 (patch)
tree7ef19a74169e184fab135e134d6f21b66bd6f44a /console-tools
parente9a7a6212b5881bd29ee5936b492f4d8899df8bb (diff)
downloadbusybox-w32-ae843e9cc8984a420b44648d0d1f5166c987a158.tar.gz
busybox-w32-ae843e9cc8984a420b44648d0d1f5166c987a158.tar.bz2
busybox-w32-ae843e9cc8984a420b44648d0d1f5166c987a158.zip
- add new applet resize.
text data bss dec hex filename 185 0 0 185 b9 console-tools/resize.o 255 0 0 255 ff console-tools/resize.o.print
Diffstat (limited to 'console-tools')
-rw-r--r--console-tools/Config.in17
-rw-r--r--console-tools/Makefile.in1
-rw-r--r--console-tools/resize.c38
3 files changed, 56 insertions, 0 deletions
diff --git a/console-tools/Config.in b/console-tools/Config.in
index ec2273c35..27b14a865 100644
--- a/console-tools/Config.in
+++ b/console-tools/Config.in
@@ -58,6 +58,23 @@ config CONFIG_RESET
58 This program is used to reset the terminal screen, if it 58 This program is used to reset the terminal screen, if it
59 gets messed up. 59 gets messed up.
60 60
61config CONFIG_APP_RESIZE
62 bool "resize"
63 default n
64 help
65 This program is used to (re)set the width and height of your current
66 terminal.
67
68config CONFIG_FEATURE_RESIZE_PRINT
69 bool "print environment variables"
70 default n
71 depends on CONFIG_APP_RESIZE
72 help
73 Prints the newly set size (number of columns and rows) of
74 the terminal.
75 E.g.:
76 COLUMNS=80;LINES=44;export COLUMNS LINES;
77
61config CONFIG_SETCONSOLE 78config CONFIG_SETCONSOLE
62 bool "setconsole" 79 bool "setconsole"
63 default n 80 default n
diff --git a/console-tools/Makefile.in b/console-tools/Makefile.in
index 437bcd0ec..92331f527 100644
--- a/console-tools/Makefile.in
+++ b/console-tools/Makefile.in
@@ -20,6 +20,7 @@ CONSOLETOOLS-$(CONFIG_LOADFONT) += loadfont.o
20CONSOLETOOLS-$(CONFIG_LOADKMAP) += loadkmap.o 20CONSOLETOOLS-$(CONFIG_LOADKMAP) += loadkmap.o
21CONSOLETOOLS-$(CONFIG_OPENVT) += openvt.o 21CONSOLETOOLS-$(CONFIG_OPENVT) += openvt.o
22CONSOLETOOLS-$(CONFIG_RESET) += reset.o 22CONSOLETOOLS-$(CONFIG_RESET) += reset.o
23CONSOLETOOLS-$(CONFIG_APP_RESIZE) += resize.o
23CONSOLETOOLS-$(CONFIG_SETKEYCODES) += setkeycodes.o 24CONSOLETOOLS-$(CONFIG_SETKEYCODES) += setkeycodes.o
24CONSOLETOOLS-$(CONFIG_SETLOGCONS) += setlogcons.o 25CONSOLETOOLS-$(CONFIG_SETLOGCONS) += setlogcons.o
25 26
diff --git a/console-tools/resize.c b/console-tools/resize.c
new file mode 100644
index 000000000..4aaf2f233
--- /dev/null
+++ b/console-tools/resize.c
@@ -0,0 +1,38 @@
1/* vi: set sw=4 ts=4: */
2/*
3 * resize - set terminal width and height.
4 *
5 * Copyright 2006 Bernhard Fischer
6 *
7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
8 */
9/* no options, no getopt */
10#include "busybox.h"
11
12int resize_main(int argc, char **argv)
13{
14 struct termios old, new;
15 struct winsize w = {0,0,0,0};
16 int ret;
17
18 tcgetattr(STDOUT_FILENO, &old); /* fiddle echo */
19 new = old;
20 new.c_cflag |= (CLOCAL | CREAD);
21 new.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
22 tcsetattr(STDOUT_FILENO, TCSANOW, &new);
23 /* save_cursor_pos 7
24 * scroll_whole_screen [r
25 * put_cursor_waaaay_off [$x;$yH
26 * get_cursor_pos [6n
27 * restore_cursor_pos 8
28 */
29 printf("\0337\033[r\033[999;999H\033[6n");
30 scanf("\033[%hu;%huR", &w.ws_row, &w.ws_col);
31 ret = ioctl(STDOUT_FILENO, TIOCSWINSZ, &w);
32 printf("\0338");
33 tcsetattr(STDOUT_FILENO, TCSANOW, &old);
34 if (ENABLE_FEATURE_RESIZE_PRINT)
35 printf("COLUMNS=%d;LINES=%d;export COLUMNS LINES;",
36 w.ws_col, w.ws_row);
37 return ret;
38}