From 7a733328bc5d20c1b5e2fed1b6f1715f2c89dc23 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Thu, 11 Nov 2021 15:22:39 +0100 Subject: [PATCH] Adapt help to terminal size If the error stream is a terminal, and we can retrieve the terminal size, wrap the help content according to the terminal width. --- app/src/cli.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/cli.c b/app/src/cli.c index f94504c6..e38ff9f6 100644 --- a/app/src/cli.c +++ b/app/src/cli.c @@ -11,6 +11,7 @@ #include "util/log.h" #include "util/strbuf.h" #include "util/str_util.h" +#include "util/term.h" #define STR_IMPL_(x) #x #define STR(x) STR_IMPL_(x) @@ -740,7 +741,23 @@ print_shortcut(const struct sc_shortcut *shortcut, unsigned cols) { void scrcpy_print_usage(const char *arg0) { - const unsigned cols = 80; // For now, use a hardcoded value +#define SC_TERM_COLS_DEFAULT 80 + unsigned cols; + + if (!isatty(STDERR_FILENO)) { + // Not a tty + cols = SC_TERM_COLS_DEFAULT; + } else { + bool ok = sc_term_get_size(NULL, &cols); + if (!ok) { + // Could not get the terminal size + cols = SC_TERM_COLS_DEFAULT; + } + if (cols < 20) { + // Do not accept a too small value + cols = 20; + } + } fprintf(stderr, "Usage: %s [options]\n\n" "Options:\n", arg0);