From 151c05b4978b2022eda1d6e509e65f74eb491312 Mon Sep 17 00:00:00 2001 From: Craig Small Date: Tue, 21 Jul 2015 22:45:02 +1000 Subject: [PATCH] w: Adjust command width w would error out if the window size was smaller than 71 or some other fields through environment grew too big. The code was a little convoluted as well. The minimum length for command was 3, which is pretty useless. This change does the following: w doesn't care by default the window size w will adjust the command length up and down, to a minimum of 7 characters. if the fields don't fit, w will line-wrap each line. The idea being its better the line-wrap than it is to error out. References: https://bugs.debian.org/183394 Signed-off-by: Craig Small --- w.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/w.c b/w.c index b310c190..8a19aa90 100644 --- a/w.c +++ b/w.c @@ -70,6 +70,7 @@ typedef struct utmp utmp_t; #endif #define MAX_CMD_WIDTH 512 +#define MIN_CMD_WIDTH 7 /* * This routine is careful since some programs leave utmp strings @@ -570,16 +571,11 @@ int main(int argc, char **argv) maxcmd = atoi(p); else maxcmd = MAX_CMD_WIDTH; - if (maxcmd < 71) - xerrx(EXIT_FAILURE, _("%d column window is too narrow"), maxcmd); - if (MAX_CMD_WIDTH < maxcmd) { - xwarnx(_("%d column width exceeds command buffer size, truncating to %d"), - maxcmd, MAX_CMD_WIDTH); + if (MAX_CMD_WIDTH < maxcmd) maxcmd = MAX_CMD_WIDTH; - } maxcmd -= 21 + userlen + (from ? fromlen : 0) + (longform ? 20 : 0); - if (maxcmd < 3) - xwarnx(_("warning: screen width %d suboptimal"), win.ws_col); + if (maxcmd < MIN_CMD_WIDTH) + maxcmd = MIN_CMD_WIDTH; procs = readproctab(PROC_FILLCOM | PROC_FILLUSR | PROC_FILLSTAT);