Use sudo_get_ttysize() in help() and usage().

This eliminates a dependency on the user_details global.
This commit is contained in:
Todd C. Miller
2023-03-25 16:27:44 -06:00
parent f95c9f839c
commit e435b158b8

View File

@@ -711,7 +711,7 @@ usage_out(const char *buf)
* The actual usage strings are in sudo_usage.h for configure substitution. * The actual usage strings are in sudo_usage.h for configure substitution.
*/ */
static void static void
display_usage(int (*output)(const char *)) display_usage(int (*output)(const char *), int cols)
{ {
struct sudo_lbuf lbuf; struct sudo_lbuf lbuf;
const char *uvec[6]; const char *uvec[6];
@@ -738,8 +738,7 @@ display_usage(int (*output)(const char *))
* tty width. * tty width.
*/ */
ulen = (int)strlen(getprogname()) + 8; ulen = (int)strlen(getprogname()) + 8;
sudo_lbuf_init(&lbuf, output, ulen, NULL, sudo_lbuf_init(&lbuf, output, ulen, NULL, cols);
user_details.ts_cols);
for (i = 0; uvec[i] != NULL; i++) { for (i = 0; uvec[i] != NULL; i++) {
sudo_lbuf_append(&lbuf, "usage: %s%s", getprogname(), uvec[i]); sudo_lbuf_append(&lbuf, "usage: %s%s", getprogname(), uvec[i]);
sudo_lbuf_print(&lbuf); sudo_lbuf_print(&lbuf);
@@ -753,7 +752,10 @@ display_usage(int (*output)(const char *))
void void
usage(void) usage(void)
{ {
display_usage(usage_err); int rows, cols;
sudo_get_ttysize(&rows, &cols);
display_usage(usage_err, cols);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
@@ -790,9 +792,11 @@ help(void)
const int indent = 32; const int indent = 32;
const char *pname = getprogname(); const char *pname = getprogname();
bool sudoedit = false; bool sudoedit = false;
int rows, cols;
debug_decl(help, SUDO_DEBUG_ARGS); 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) { if (strcmp(pname, "sudoedit") == 0) {
sudoedit = true; sudoedit = true;
sudo_lbuf_append(&lbuf, _("%s - edit files as another user\n\n"), pname); sudo_lbuf_append(&lbuf, _("%s - edit files as another user\n\n"), pname);
@@ -801,7 +805,7 @@ help(void)
} }
sudo_lbuf_print(&lbuf); sudo_lbuf_print(&lbuf);
display_usage(usage_out); display_usage(usage_out, cols);
sudo_lbuf_append(&lbuf, "%s", _("\nOptions:\n")); sudo_lbuf_append(&lbuf, "%s", _("\nOptions:\n"));
sudo_lbuf_append(&lbuf, " -A, --askpass %s\n", sudo_lbuf_append(&lbuf, " -A, --askpass %s\n",