http://bugzilla.novell.com/show_bug.cgi?id=493776
Summary: System.Console.BufferWidth doesn't support pipes
Classification: Mono
Product: Mono: Class Libraries
Version: SVN
Platform: x86-64
OS/Version: openSUSE 11.1
Status: NEW
Severity: Normal
Priority: P5 - None
Component: CORLIB
AssignedTo: [email protected]
ReportedBy: [email protected]
QAContact: [email protected]
Found By: ---
If you pipe the output of a program to less(1), Console.BufferWidth will be 0
(instead of the actual terminal width). This causes the output of programs
which rely on Console.BufferWidth to have their output changed simply by piping
the output.
Example: sqlmetal (which uses Console.BufferWidth to choose how wide text
should be displayed).
No pipe:
$ sqlmetal --help
# lots of output omitted...
/readLineAtExit Wait for a key to be pressed after
processing.
# ...
With a pipe:
$ sqlmetal --help | less
# lots of ouptut omitted...
/readLineAtExit Wait
for
a
key
to
be
pressed
after
processing.
# ...
Aside from being hilarious, the output is also unusable (who wants to read
that?!).
The underlying problem appears to be System.ConsoleDriver.IsConsole, which uses
isatty(3) to determine if the output is a terminal...which it won't be here (or
when e.g. redirecting output to a file).
I'm not sure what a proper fix is. miguel suggested using either $COLS or
using 80 as a minimum width on IRC as a solution, but that doesn't seem
appropriate either...
--
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
_______________________________________________
mono-bugs maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-bugs