- 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
This commit is contained in:
Bernhard Reutner-Fischer 2006-09-22 08:18:41 +00:00
parent e9a7a6212b
commit ae843e9cc8
5 changed files with 62 additions and 0 deletions

View File

@ -58,6 +58,23 @@ config CONFIG_RESET
This program is used to reset the terminal screen, if it This program is used to reset the terminal screen, if it
gets messed up. gets messed up.
config CONFIG_APP_RESIZE
bool "resize"
default n
help
This program is used to (re)set the width and height of your current
terminal.
config CONFIG_FEATURE_RESIZE_PRINT
bool "print environment variables"
default n
depends on CONFIG_APP_RESIZE
help
Prints the newly set size (number of columns and rows) of
the terminal.
E.g.:
COLUMNS=80;LINES=44;export COLUMNS LINES;
config CONFIG_SETCONSOLE config CONFIG_SETCONSOLE
bool "setconsole" bool "setconsole"
default n default n

View File

@ -20,6 +20,7 @@ CONSOLETOOLS-$(CONFIG_LOADFONT) += loadfont.o
CONSOLETOOLS-$(CONFIG_LOADKMAP) += loadkmap.o CONSOLETOOLS-$(CONFIG_LOADKMAP) += loadkmap.o
CONSOLETOOLS-$(CONFIG_OPENVT) += openvt.o CONSOLETOOLS-$(CONFIG_OPENVT) += openvt.o
CONSOLETOOLS-$(CONFIG_RESET) += reset.o CONSOLETOOLS-$(CONFIG_RESET) += reset.o
CONSOLETOOLS-$(CONFIG_APP_RESIZE) += resize.o
CONSOLETOOLS-$(CONFIG_SETKEYCODES) += setkeycodes.o CONSOLETOOLS-$(CONFIG_SETKEYCODES) += setkeycodes.o
CONSOLETOOLS-$(CONFIG_SETLOGCONS) += setlogcons.o CONSOLETOOLS-$(CONFIG_SETLOGCONS) += setlogcons.o

38
console-tools/resize.c Normal file
View File

@ -0,0 +1,38 @@
/* vi: set sw=4 ts=4: */
/*
* resize - set terminal width and height.
*
* Copyright 2006 Bernhard Fischer
*
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
/* no options, no getopt */
#include "busybox.h"
int resize_main(int argc, char **argv)
{
struct termios old, new;
struct winsize w = {0,0,0,0};
int ret;
tcgetattr(STDOUT_FILENO, &old); /* fiddle echo */
new = old;
new.c_cflag |= (CLOCAL | CREAD);
new.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
tcsetattr(STDOUT_FILENO, TCSANOW, &new);
/* save_cursor_pos 7
* scroll_whole_screen [r
* put_cursor_waaaay_off [$x;$yH
* get_cursor_pos [6n
* restore_cursor_pos 8
*/
printf("\0337\033[r\033[999;999H\033[6n");
scanf("\033[%hu;%huR", &w.ws_row, &w.ws_col);
ret = ioctl(STDOUT_FILENO, TIOCSWINSZ, &w);
printf("\0338");
tcsetattr(STDOUT_FILENO, TCSANOW, &old);
if (ENABLE_FEATURE_RESIZE_PRINT)
printf("COLUMNS=%d;LINES=%d;export COLUMNS LINES;",
w.ws_col, w.ws_row);
return ret;
}

View File

@ -226,6 +226,7 @@ USE_REALPATH(APPLET(realpath, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_HALT(APPLET_ODDNAME(reboot, halt, _BB_DIR_SBIN, _BB_SUID_NEVER, reboot)) USE_HALT(APPLET_ODDNAME(reboot, halt, _BB_DIR_SBIN, _BB_SUID_NEVER, reboot))
USE_RENICE(APPLET(renice, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) USE_RENICE(APPLET(renice, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_RESET(APPLET(reset, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) USE_RESET(APPLET(reset, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_APP_RESIZE(APPLET(resize, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_RM(APPLET(rm, _BB_DIR_BIN, _BB_SUID_NEVER)) USE_RM(APPLET(rm, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_RMDIR(APPLET(rmdir, _BB_DIR_BIN, _BB_SUID_NEVER)) USE_RMDIR(APPLET(rmdir, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_RMMOD(APPLET(rmmod, _BB_DIR_SBIN, _BB_SUID_NEVER)) USE_RMMOD(APPLET(rmmod, _BB_DIR_SBIN, _BB_SUID_NEVER))

View File

@ -2455,6 +2455,11 @@ USE_FEATURE_MDEV_CONFIG( \
#define reset_full_usage \ #define reset_full_usage \
"Resets the screen." "Resets the screen."
#define resize_trivial_usage \
""
#define resize_full_usage \
"Resizes the screen."
#define rm_trivial_usage \ #define rm_trivial_usage \
"[OPTION]... FILE..." "[OPTION]... FILE..."
#define rm_full_usage \ #define rm_full_usage \