aboutsummaryrefslogtreecommitdiff
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
parent1caca34aa67b2f267d0049d17e5430ca9c58ac3f (diff)
downloadbusybox-w32-c01af95c398b21203cd991917101e29b21821284.tar.gz
busybox-w32-c01af95c398b21203cd991917101e29b21821284.tar.bz2
busybox-w32-c01af95c398b21203cd991917101e29b21821284.zip
ttysize: new applet. +200 bytes
-rw-r--r--include/applets.h1
-rw-r--r--include/usage.h9
-rw-r--r--miscutils/Config.in8
-rw-r--r--miscutils/Kbuild1
-rw-r--r--miscutils/ttysize.c39
5 files changed, 56 insertions, 2 deletions
diff --git a/include/applets.h b/include/applets.h
index b5e1e4ced..7eefa0843 100644
--- a/include/applets.h
+++ b/include/applets.h
@@ -337,6 +337,7 @@ USE_TR(APPLET(tr, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
337USE_TRACEROUTE(APPLET(traceroute, _BB_DIR_USR_BIN, _BB_SUID_MAYBE)) 337USE_TRACEROUTE(APPLET(traceroute, _BB_DIR_USR_BIN, _BB_SUID_MAYBE))
338USE_TRUE(APPLET_NOFORK(true, true, _BB_DIR_BIN, _BB_SUID_NEVER, true)) 338USE_TRUE(APPLET_NOFORK(true, true, _BB_DIR_BIN, _BB_SUID_NEVER, true))
339USE_TTY(APPLET(tty, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) 339USE_TTY(APPLET(tty, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
340USE_TTYSIZE(APPLET(ttysize, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
340//USE_TUNE2FS(APPLET(tune2fs, _BB_DIR_SBIN, _BB_SUID_NEVER)) 341//USE_TUNE2FS(APPLET(tune2fs, _BB_DIR_SBIN, _BB_SUID_NEVER))
341USE_APP_UDHCPC(APPLET(udhcpc, _BB_DIR_SBIN, _BB_SUID_NEVER)) 342USE_APP_UDHCPC(APPLET(udhcpc, _BB_DIR_SBIN, _BB_SUID_NEVER))
342USE_APP_UDHCPD(APPLET(udhcpd, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)) 343USE_APP_UDHCPD(APPLET(udhcpd, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
diff --git a/include/usage.h b/include/usage.h
index a17f5b189..d4d923beb 100644
--- a/include/usage.h
+++ b/include/usage.h
@@ -3606,14 +3606,19 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when
3606#define tty_trivial_usage \ 3606#define tty_trivial_usage \
3607 "" 3607 ""
3608#define tty_full_usage \ 3608#define tty_full_usage \
3609 "Print the file name of the terminal connected to standard input" \ 3609 "Print file name of standard input's terminal" \
3610 USE_INCLUDE_SUSv2( \ 3610 USE_INCLUDE_SUSv2( \
3611 "\n\nOptions:\n" \ 3611 "\n\nOptions:\n" \
3612 " -s Print nothing, only return an exit status") 3612 " -s Print nothing, only return exit status")
3613#define tty_example_usage \ 3613#define tty_example_usage \
3614 "$ tty\n" \ 3614 "$ tty\n" \
3615 "/dev/tty2\n" 3615 "/dev/tty2\n"
3616 3616
3617#define ttysize_trivial_usage \
3618 "[w] [h]"
3619#define ttysize_full_usage \
3620 "Print dimension(s) of standard input's terminal, on error return 80x25"
3621
3617#define tune2fs_trivial_usage \ 3622#define tune2fs_trivial_usage \
3618 "[-c max-mounts-count] [-e errors-behavior] [-g group] " \ 3623 "[-c max-mounts-count] [-e errors-behavior] [-g group] " \
3619 "[-i interval[d|m|w]] [-j] [-J journal-options] [-l] [-s sparse-flag] " \ 3624 "[-i interval[d|m|w]] [-j] [-J journal-options] [-l] [-s sparse-flag] " \
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}