Le 31/05/2013 14:28, Janus Weil a écrit : >> Wouldn't it work to use the TIOCGWINSZ ioctl only if isatty() reports >> that we're outputting to a terminal? > > Good point. Updated patch attached, which imposes no limit if we're > not outputting to a terminal (as suggested by Mikael). > > Ok for trunk, or am I missing anything else? (Testing welcome ...) > > Cheers, > Janus > > Index: gcc/fortran/error.c > =================================================================== > --- gcc/fortran/error.c (revision 199530) > +++ gcc/fortran/error.c (working copy) > @@ -30,6 +30,13 @@ along with GCC; see the file COPYING3. If not see > #include "flags.h" > #include "gfortran.h" > > +#if !(defined (_WIN32) || defined (VMS) || defined (__vxworks) || \ > + defined (__Lynx__) || defined (__ANDROID__)) We should better use autoconf rather than hard-coding platforms here.
> +/* UNIX-like systems */ > +#include <sys/ioctl.h> > +#endif > + > + > static int suppress_errors = 0; > > static int warnings_not_errors = 0; > @@ -59,9 +66,24 @@ gfc_pop_suppress_errors (void) > } > > > +/* Determine terminal width (for trimming source lines in output). */ > + > static int > get_terminal_width (void) > { > + /* Only limit the width if we're outputting to a terminal. */ > + if (!isatty (STDERR_FILENO)) > + return INT_MAX; Guard it with HAVE_UNISTD_H or HAVE_ISATTY ? > + > + /* Method #1: Use ioctl (not available on all systems). */ > +#ifdef TIOCGWINSZ > + struct winsize w; > + ioctl (0, TIOCGWINSZ, &w); You should check the ioctl result. I bet it returns non-zero in Manfred's (pathological) case... Actually, I have just checked; it does. The rest looks good. Mikael