ttysize: new applet. +200 bytes

This commit is contained in:
Denis Vlasenko 2007-08-02 22:23:47 +00:00
parent 1caca34aa6
commit c01af95c39
5 changed files with 56 additions and 2 deletions

View File

@ -337,6 +337,7 @@ USE_TR(APPLET(tr, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_TRACEROUTE(APPLET(traceroute, _BB_DIR_USR_BIN, _BB_SUID_MAYBE))
USE_TRUE(APPLET_NOFORK(true, true, _BB_DIR_BIN, _BB_SUID_NEVER, true))
USE_TTY(APPLET(tty, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_TTYSIZE(APPLET(ttysize, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
//USE_TUNE2FS(APPLET(tune2fs, _BB_DIR_SBIN, _BB_SUID_NEVER))
USE_APP_UDHCPC(APPLET(udhcpc, _BB_DIR_SBIN, _BB_SUID_NEVER))
USE_APP_UDHCPD(APPLET(udhcpd, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))

View File

@ -3606,14 +3606,19 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when
#define tty_trivial_usage \
""
#define tty_full_usage \
"Print the file name of the terminal connected to standard input" \
"Print file name of standard input's terminal" \
USE_INCLUDE_SUSv2( \
"\n\nOptions:\n" \
" -s Print nothing, only return an exit status")
" -s Print nothing, only return exit status")
#define tty_example_usage \
"$ tty\n" \
"/dev/tty2\n"
#define ttysize_trivial_usage \
"[w] [h]"
#define ttysize_full_usage \
"Print dimension(s) of standard input's terminal, on error return 80x25"
#define tune2fs_trivial_usage \
"[-c max-mounts-count] [-e errors-behavior] [-g group] " \
"[-i interval[d|m|w]] [-j] [-J journal-options] [-l] [-s sparse-flag] " \

View File

@ -366,6 +366,14 @@ config TIME
When the command finishes, time writes a message to standard output
giving timing statistics about this program run.
config TTYSIZE
bool "ttysize"
default n
help
A replacement for "stty size". Unlike stty, can report only width,
only height, or both, in any order. It also does not complain on error,
but returns default 80x24. Usage in shell scripts: width=`ttysize w`.
config WATCHDOG
bool "watchdog"
default n

View File

@ -27,4 +27,5 @@ lib-$(CONFIG_SETSID) += setsid.o
lib-$(CONFIG_STRINGS) += strings.o
lib-$(CONFIG_TASKSET) += taskset.o
lib-$(CONFIG_TIME) += time.o
lib-$(CONFIG_TTYSIZE) += ttysize.o
lib-$(CONFIG_WATCHDOG) += watchdog.o

39
miscutils/ttysize.c Normal file
View File

@ -0,0 +1,39 @@
/*
* Replacement for "stty size", which is awkward for shell script use.
* - Allows to request width, height, or both, in any order.
* - Does not complain on error, but returns default 80x24.
* - Size: less than 200 bytes
*/
#include "libbb.h"
int ttysize_main(int argc, char **argv);
int ttysize_main(int argc, char **argv)
{
unsigned w,h;
struct winsize wsz;
w = 80;
h = 24;
if (!ioctl(0, TIOCGWINSZ, &wsz)) {
w = wsz.ws_col;
h = wsz.ws_row;
}
if (argc == 1) {
printf("%u %u", w, h);
} else {
const char *fmt, *arg;
fmt = "%u %u" + 3; /* "%u" */
while ((arg = *++argv) != NULL) {
char c = arg[0];
if (c == 'w')
printf(fmt, w);
if (c == 'h')
printf(fmt, h);
fmt = "%u %u" + 2; /* " %u" */
}
}
putchar('\n');
return 0;
}