Hi, Unlike all the other software in the tree that checks terminal sizes, ps(1) used to check the stdin and stderr terminal sizes as well as stdout. When I unified the terminal size checks in the tree in March, I missed this, and now "ps aux | blah" gets wrapped to 79 characters no matter how big the terminal is.
The below diff brings back the old behavior: if the output is a pipe, ps will check if either stderr or stdin is a terminal and if so will use its width. ok? Index: ps.c =================================================================== RCS file: /cvs/src/bin/ps/ps.c,v retrieving revision 1.70 diff -u -p -r1.70 ps.c --- ps.c 17 Mar 2016 05:27:10 -0000 1.70 +++ ps.c 22 Sep 2016 10:14:10 -0000 @@ -105,7 +105,10 @@ main(int argc, char *argv[]) termwidth = 0; if ((cols = getenv("COLUMNS")) != NULL) termwidth = strtonum(cols, 1, INT_MAX, NULL); - if (termwidth == 0 && ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == 0 && + if (termwidth == 0 && + (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == 0 || + ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) == 0 || + ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) == 0) && ws.ws_col > 0) termwidth = ws.ws_col - 1; if (termwidth == 0) Index: ps.1 =================================================================== RCS file: /cvs/src/bin/ps/ps.1,v retrieving revision 1.108 diff -u -p -r1.108 ps.1 --- ps.1 8 Sep 2016 15:54:36 -0000 1.108 +++ ps.1 22 Sep 2016 10:14:10 -0000 @@ -543,8 +543,13 @@ If set to a positive integer, output is formatted to the given width in columns. Otherwise, .Nm -defaults to the terminal width \(mi 1, or 79 columns if the output is not a -terminal. +defaults to the terminal width \(mi 1, +or 79 columns if none of +.Dv stdout , +.Dv stderr +and +.Dv stdin +are a terminal. .It Ev TZ The time zone to use when displaying dates. See