diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-08-02 22:23:47 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-08-02 22:23:47 +0000 |
commit | c01af95c398b21203cd991917101e29b21821284 (patch) | |
tree | c93fdf7527f67950364d8e355ffaa6073d99688e | |
parent | 1caca34aa67b2f267d0049d17e5430ca9c58ac3f (diff) | |
download | busybox-w32-c01af95c398b21203cd991917101e29b21821284.tar.gz busybox-w32-c01af95c398b21203cd991917101e29b21821284.tar.bz2 busybox-w32-c01af95c398b21203cd991917101e29b21821284.zip |
ttysize: new applet. +200 bytes
-rw-r--r-- | include/applets.h | 1 | ||||
-rw-r--r-- | include/usage.h | 9 | ||||
-rw-r--r-- | miscutils/Config.in | 8 | ||||
-rw-r--r-- | miscutils/Kbuild | 1 | ||||
-rw-r--r-- | miscutils/ttysize.c | 39 |
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)) | |||
337 | USE_TRACEROUTE(APPLET(traceroute, _BB_DIR_USR_BIN, _BB_SUID_MAYBE)) | 337 | USE_TRACEROUTE(APPLET(traceroute, _BB_DIR_USR_BIN, _BB_SUID_MAYBE)) |
338 | USE_TRUE(APPLET_NOFORK(true, true, _BB_DIR_BIN, _BB_SUID_NEVER, true)) | 338 | USE_TRUE(APPLET_NOFORK(true, true, _BB_DIR_BIN, _BB_SUID_NEVER, true)) |
339 | USE_TTY(APPLET(tty, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) | 339 | USE_TTY(APPLET(tty, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) |
340 | USE_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)) |
341 | USE_APP_UDHCPC(APPLET(udhcpc, _BB_DIR_SBIN, _BB_SUID_NEVER)) | 342 | USE_APP_UDHCPC(APPLET(udhcpc, _BB_DIR_SBIN, _BB_SUID_NEVER)) |
342 | USE_APP_UDHCPD(APPLET(udhcpd, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)) | 343 | USE_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 | ||
369 | config 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 | |||
369 | config WATCHDOG | 377 | config 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 | |||
27 | lib-$(CONFIG_STRINGS) += strings.o | 27 | lib-$(CONFIG_STRINGS) += strings.o |
28 | lib-$(CONFIG_TASKSET) += taskset.o | 28 | lib-$(CONFIG_TASKSET) += taskset.o |
29 | lib-$(CONFIG_TIME) += time.o | 29 | lib-$(CONFIG_TIME) += time.o |
30 | lib-$(CONFIG_TTYSIZE) += ttysize.o | ||
30 | lib-$(CONFIG_WATCHDOG) += watchdog.o | 31 | lib-$(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 | |||
9 | int ttysize_main(int argc, char **argv); | ||
10 | int 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 | } | ||