aboutsummaryrefslogtreecommitdiff
path: root/console-tools
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-10-25 15:07:56 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-10-25 15:07:56 +0000
commite63a0dee9e559110bcaec494ae5e7fc78c4141c7 (patch)
treee6566648da23b9e403d3d01ac2cbd60cad8d2c26 /console-tools
parent80778503303fe3b501d8fcec395f0ddf0c49becd (diff)
downloadbusybox-w32-e63a0dee9e559110bcaec494ae5e7fc78c4141c7.tar.gz
busybox-w32-e63a0dee9e559110bcaec494ae5e7fc78c4141c7.tar.bz2
busybox-w32-e63a0dee9e559110bcaec494ae5e7fc78c4141c7.zip
- revert r16191; re-add resize() applet.
text data bss dec hex filename 288 0 0 288 120 console-tools/_resize.o.gcc-2.95 258 0 0 258 102 console-tools/_resize.o.gcc-3.3 252 0 0 252 fc console-tools/_resize.o.gcc-3.4
Diffstat (limited to 'console-tools')
-rw-r--r--console-tools/Config.in17
-rw-r--r--console-tools/Kbuild1
-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 f1dbac531..4a5710de6 100644
--- a/console-tools/Config.in
+++ b/console-tools/Config.in
@@ -58,6 +58,23 @@ 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 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 FEATURE_RESIZE_PRINT
69 bool "print environment variables"
70 default n
71 depends on 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 SETCONSOLE 78config SETCONSOLE
62 bool "setconsole" 79 bool "setconsole"
63 default n 80 default n
diff --git a/console-tools/Kbuild b/console-tools/Kbuild
index 8e377c559..a55bc087c 100644
--- a/console-tools/Kbuild
+++ b/console-tools/Kbuild
@@ -14,5 +14,6 @@ lib-$(CONFIG_LOADFONT) += loadfont.o
14lib-$(CONFIG_LOADKMAP) += loadkmap.o 14lib-$(CONFIG_LOADKMAP) += loadkmap.o
15lib-$(CONFIG_OPENVT) += openvt.o 15lib-$(CONFIG_OPENVT) += openvt.o
16lib-$(CONFIG_RESET) += reset.o 16lib-$(CONFIG_RESET) += reset.o
17lib-$(CONFIG_RESIZE) += resize.o
17lib-$(CONFIG_SETKEYCODES) += setkeycodes.o 18lib-$(CONFIG_SETKEYCODES) += setkeycodes.o
18lib-$(CONFIG_SETLOGCONS) += setlogcons.o 19lib-$(CONFIG_SETLOGCONS) += setlogcons.o
diff --git a/console-tools/resize.c b/console-tools/resize.c
new file mode 100644
index 000000000..c405629aa
--- /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;\n",
36 w.ws_col, w.ws_row);
37 return ret;
38}