From 1b276a864b311ea55d0b413b9031b8c4128bc7e5 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Thu, 13 Aug 2020 09:19:11 -0700 Subject: toybox: fit list of commands in terminal width. This can still be pretty ragged because it just leaves space for the longest name at the end of each line rather than measuring the name that actually comes next, but at least with this change we never over-run. I noticed this because ConnectBot on my current device gives me a 60-column terminal. busybox seems to do this, though it seems to actually measure, judging by how close it gets to the margin. That doesn't seem worth the effort though? --- main.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/main.c b/main.c index ffa735e3..ced2a65b 100644 --- a/main.c +++ b/main.c @@ -178,6 +178,7 @@ void toybox_main(void) { char *toy_paths[] = {"usr/", "bin/", "sbin/", 0}, *s = toys.argv[1]; int i, len = 0; + unsigned width = 80; // fast path: try to exec immediately. // (Leave toys.which null to disable suid return logic.) @@ -195,7 +196,8 @@ void toybox_main(void) if (toys.argv[1] && strcmp(toys.argv[1], "--long")) unknown(toys.argv[1]); - // Output list of command. + // Output list of commands. + terminal_size(&width, 0); for (i = 1; i 65) len = 0; + if (++len > width-15) len = 0; xputc(len ? ' ' : '\n'); } } -- cgit v1.2.3