aboutsummaryrefslogtreecommitdiff
path: root/miscutils
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-08-02 22:23:47 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-08-02 22:23:47 +0000
commitc01af95c398b21203cd991917101e29b21821284 (patch)
treec93fdf7527f67950364d8e355ffaa6073d99688e /miscutils
parent1caca34aa67b2f267d0049d17e5430ca9c58ac3f (diff)
downloadbusybox-w32-c01af95c398b21203cd991917101e29b21821284.tar.gz
busybox-w32-c01af95c398b21203cd991917101e29b21821284.tar.bz2
busybox-w32-c01af95c398b21203cd991917101e29b21821284.zip
ttysize: new applet. +200 bytes
Diffstat (limited to 'miscutils')
-rw-r--r--miscutils/Config.in8
-rw-r--r--miscutils/Kbuild1
-rw-r--r--miscutils/ttysize.c39
3 files changed, 48 insertions, 0 deletions
diff --git a/miscutils/Config.in b/miscutils/Config.in
index 170310fda..3dd2674d6 100644
--- a/miscutils/Config.in
+++ b/miscutils/Config.in
@@ -366,6 +366,14 @@ config TIME
366 When the command finishes, time writes a message to standard output 366 When the command finishes, time writes a message to standard output
367 giving timing statistics about this program run. 367 giving timing statistics about this program run.
368 368
369config TTYSIZE
370 bool "ttysize"
371 default n
372 help
373 A replacement for "stty size". Unlike stty, can report only width,
374 only height, or both, in any order. It also does not complain on error,
375 but returns default 80x24. Usage in shell scripts: width=`ttysize w`.
376
369config WATCHDOG 377config WATCHDOG
370 bool "watchdog" 378 bool "watchdog"
371 default n 379 default n
diff --git a/miscutils/Kbuild b/miscutils/Kbuild
index 22b4564df..b420d68e7 100644
--- a/miscutils/Kbuild
+++ b/miscutils/Kbuild
@@ -27,4 +27,5 @@ lib-$(CONFIG_SETSID) += setsid.o
27lib-$(CONFIG_STRINGS) += strings.o 27lib-$(CONFIG_STRINGS) += strings.o
28lib-$(CONFIG_TASKSET) += taskset.o 28lib-$(CONFIG_TASKSET) += taskset.o
29lib-$(CONFIG_TIME) += time.o 29lib-$(CONFIG_TIME) += time.o
30lib-$(CONFIG_TTYSIZE) += ttysize.o
30lib-$(CONFIG_WATCHDOG) += watchdog.o 31lib-$(CONFIG_WATCHDOG) += watchdog.o
diff --git a/miscutils/ttysize.c b/miscutils/ttysize.c
new file mode 100644
index 000000000..c1b702c2c
--- /dev/null
+++ b/miscutils/ttysize.c
@@ -0,0 +1,39 @@
1/*
2 * Replacement for "stty size", which is awkward for shell script use.
3 * - Allows to request width, height, or both, in any order.
4 * - Does not complain on error, but returns default 80x24.
5 * - Size: less than 200 bytes
6 */
7#include "libbb.h"
8
9int ttysize_main(int argc, char **argv);
10int ttysize_main(int argc, char **argv)
11{
12 unsigned w,h;
13 struct winsize wsz;
14
15 w = 80;
16 h = 24;
17 if (!ioctl(0, TIOCGWINSZ, &wsz)) {
18 w = wsz.ws_col;
19 h = wsz.ws_row;
20 }
21
22 if (argc == 1) {
23 printf("%u %u", w, h);
24 } else {
25 const char *fmt, *arg;
26
27 fmt = "%u %u" + 3; /* "%u" */
28 while ((arg = *++argv) != NULL) {
29 char c = arg[0];
30 if (c == 'w')
31 printf(fmt, w);
32 if (c == 'h')
33 printf(fmt, h);
34 fmt = "%u %u" + 2; /* " %u" */
35 }
36 }
37 putchar('\n');
38 return 0;
39}