From 63024d1acd46e4f07adb3c03bb42f59f895fd4b0 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Sat, 25 Mar 2023 16:27:44 -0600 Subject: Use sudo_get_ttysize() in help() and usage(). This eliminates a dependency on the user_details global. --- src/parse_args.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/parse_args.c b/src/parse_args.c index dcd12c61f..8e3d62e10 100644 --- a/src/parse_args.c +++ b/src/parse_args.c @@ -711,7 +711,7 @@ usage_out(const char *buf) * The actual usage strings are in sudo_usage.h for configure substitution. */ static void -display_usage(int (*output)(const char *)) +display_usage(int (*output)(const char *), int cols) { struct sudo_lbuf lbuf; const char *uvec[6]; @@ -738,8 +738,7 @@ display_usage(int (*output)(const char *)) * tty width. */ ulen = (int)strlen(getprogname()) + 8; - sudo_lbuf_init(&lbuf, output, ulen, NULL, - user_details.ts_cols); + sudo_lbuf_init(&lbuf, output, ulen, NULL, cols); for (i = 0; uvec[i] != NULL; i++) { sudo_lbuf_append(&lbuf, "usage: %s%s", getprogname(), uvec[i]); sudo_lbuf_print(&lbuf); @@ -753,7 +752,10 @@ display_usage(int (*output)(const char *)) void usage(void) { - display_usage(usage_err); + int rows, cols; + + sudo_get_ttysize(&rows, &cols); + display_usage(usage_err, cols); exit(EXIT_FAILURE); } @@ -790,9 +792,11 @@ help(void) const int indent = 32; const char *pname = getprogname(); bool sudoedit = false; + int rows, cols; debug_decl(help, SUDO_DEBUG_ARGS); - sudo_lbuf_init(&lbuf, usage_out, indent, NULL, user_details.ts_cols); + sudo_get_ttysize(&rows, &cols); + sudo_lbuf_init(&lbuf, usage_out, indent, NULL, cols); if (strcmp(pname, "sudoedit") == 0) { sudoedit = true; sudo_lbuf_append(&lbuf, _("%s - edit files as another user\n\n"), pname); @@ -801,7 +805,7 @@ help(void) } sudo_lbuf_print(&lbuf); - display_usage(usage_out); + display_usage(usage_out, cols); sudo_lbuf_append(&lbuf, "%s", _("\nOptions:\n")); sudo_lbuf_append(&lbuf, " -A, --askpass %s\n", -- cgit v1.2.1