[BusyBox-cvs] busybox/coreutils ls.c,1.107,1.108

Erik Andersen andersen at busybox.net
Tue Mar 23 23:15:38 UTC 2004


Update of /var/cvs/busybox/coreutils
In directory nail:/tmp/cvs-serv10887/coreutils

Modified Files:
	ls.c 
Log Message:
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



Index: ls.c
===================================================================
RCS file: /var/cvs/busybox/coreutils/ls.c,v
retrieving revision 1.107
retrieving revision 1.108
diff -u -d -r1.107 -r1.108
--- a/ls.c	15 Mar 2004 08:28:20 -0000	1.107
+++ b/ls.c	23 Mar 2004 23:15:36 -0000	1.108
@@ -982,7 +982,7 @@
 
 #ifdef CONFIG_FEATURE_AUTOWIDTH
 	/* Obtain the terminal width.  */
-	get_terminal_width_height(0, &terminal_width, NULL);
+	get_terminal_width_height(fileno(stdout), &terminal_width, NULL);
 	/* Go one less... */
 	terminal_width--;
 #endif




More information about the busybox-cvs mailing list