Brian Pomerantz writes:
I've noticed a bug in the "autowidth" feature more, and is probably in others. The call to the function get_terminal_width_height() passes in a file descriptor but that file descriptor is never used, instead the ioctl() is called with 0. In more_main() the call to get_terminal_width_height() passes 0 as the file descriptor instead of fileno(cin). This isn't a problem when you more a file (e.g. "more /etc/passwd") but when you pipe a file to it (e.g. "cat /etc/passwd | more") the size of the terminal cannot be determined because file descriptor 0 is not a terminal. The fix is simple, I've attached a patch for more.c and get_terminal_width_height.c. BAPper
This commit is contained in:
@ -36,7 +36,7 @@ void get_terminal_width_height(int fd, int *width, int *height)
|
||||
{
|
||||
struct winsize win = { 0, 0, 0, 0 };
|
||||
#ifdef CONFIG_FEATURE_AUTOWIDTH
|
||||
if (ioctl(0, TIOCGWINSZ, &win) != 0) {
|
||||
if (ioctl(fd, TIOCGWINSZ, &win) != 0) {
|
||||
win.ws_row = 24;
|
||||
win.ws_col = 80;
|
||||
}
|
||||
|
Reference in New Issue
Block a user