diff options
author | Sami Kerola <kerolasa@iki.fi> | 2012-07-15 12:42:56 +0200 |
---|---|---|
committer | Sami Kerola <kerolasa@iki.fi> | 2012-07-15 12:49:22 +0200 |
commit | d958f1c0fc9526008a3ed82f2a982f02e7bd2072 (patch) | |
tree | fd23eb9f0167ed3da86db37161dd58cfd7534916 | |
parent | 7696bd200e6062f6c15b7922ebfbfc81fcbcb18c (diff) | |
download | procps-ng-d958f1c0fc9526008a3ed82f2a982f02e7bd2072.tar.gz |
w: do not truncate command when width is not known
This change also adds a definition, which is in control of all command
buffer size related operations.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
-rw-r--r-- | w.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -69,6 +69,8 @@ typedef struct utmp utmp_t; # define FROM_STRING "off" #endif +#define MAX_CMD_WIDTH 512 + /* * This routine is careful since some programs leave utmp strings * unprintable. Always outputs at least 16 chars padded with @@ -419,7 +421,7 @@ static void showinfo(utmp_t * u, int formtype, int maxcmd, int from, } fputs(" ", stdout); if (likely(best)) { - char cmdbuf[512]; + char cmdbuf[MAX_CMD_WIDTH]; escape_command(cmdbuf, best, sizeof cmdbuf, &maxcmd, ESC_ARGS); fputs(cmdbuf, stdout); } else { @@ -554,10 +556,14 @@ int main(int argc, char **argv) else if ((p = getenv("COLUMNS"))) maxcmd = atoi(p); else - maxcmd = 80; + 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); + 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); |