svn commit: r314685 - head/bin/ps
Ed Schouten
ed at nuxi.nl
Sat Mar 4 22:59:08 UTC 2017
Hi Conrad,
2017-03-04 23:38 GMT+01:00 Conrad Meyer <cem at freebsd.org>:
> Log:
> ps(1): Only detect terminal width if stdout is a tty
Nice!
> Modified: head/bin/ps/ps.c
> ==============================================================================
> --- head/bin/ps/ps.c Sat Mar 4 22:23:59 2017 (r314684)
> +++ head/bin/ps/ps.c Sat Mar 4 22:38:10 2017 (r314685)
> @@ -194,6 +194,8 @@ main(int argc, char *argv[])
>
> if ((cols = getenv("COLUMNS")) != NULL && *cols != '\0')
> termwidth = atoi(cols);
> + else if (!isatty(STDOUT_FILENO))
> + termwidth = UNLIMITED;
> else if ((ioctl(STDOUT_FILENO, TIOCGWINSZ, (char *)&ws) == -1 &&
> ioctl(STDERR_FILENO, TIOCGWINSZ, (char *)&ws) == -1 &&
> ioctl(STDIN_FILENO, TIOCGWINSZ, (char *)&ws) == -1) ||
>
I think you can actually go ahead and simplify this a bit:
- If something is a TTY, then our implementation of the TTY layer
guarantees that TIOCGWINSZ always works.
- If we're only interested in testing stdout whether it's a TTY, I
think it makes little sense to check TIOCGWINSZ on stdin, stderr.
I think there would therefore be very little harm to use something like this:
| if ((cols = getenv("COLUMNS")) != NULL && *cols != '\0')
| termwidth = atoi(cols);
| else if ((ioctl(STDOUT_FILENO, TIOCGWINSZ, (char *)&ws) ==
-1 && ws.ws_row == 0)
| termwidth = UNLIMITED;
| else
| termwidth = ws.ws_col - 1;
--
Ed Schouten <ed at nuxi.nl>
Nuxi, 's-Hertogenbosch, the Netherlands
KvK-nr.: 62051717
More information about the svn-src-head
mailing list