configure.ac: Add AC_HEADER_TIOCGWINSZ macro.

2013-06-01  Janus Weil  <janus@gcc.gnu.org>
	    Mikael Morin  <mikael@gcc.gnu.org>

	* configure.ac: Add AC_HEADER_TIOCGWINSZ macro.
	* config.in: Regenerated.
	* configure: Regenerated.


2013-06-01  Janus Weil  <janus@gcc.gnu.org>
	    Mikael Morin  <mikael@gcc.gnu.org>

	* error.c (get_terminal_width): Only limit the width if we're
	outputting to a terminal. Try to determine width via ioctl.

Co-Authored-By: Mikael Morin <mikael@gcc.gnu.org>

From-SVN: r199585
This commit is contained in:
Janus Weil 2013-06-01 21:12:57 +02:00
parent 1c9f675fd9
commit c68a6e08c5
6 changed files with 111 additions and 4 deletions

View file

@ -1,3 +1,10 @@
2013-06-01 Janus Weil <janus@gcc.gnu.org>
Mikael Morin <mikael@gcc.gnu.org>
* configure.ac: Add AC_HEADER_TIOCGWINSZ macro.
* config.in: Regenerated.
* configure: Regenerated.
2013-06-01 Jan Hubicka <jh@suse.cz>
PR middle-end/57366

View file

@ -199,6 +199,12 @@
#endif
/* Define to 1 if `TIOCGWINSZ' requires <sys/ioctl.h>. */
#ifndef USED_FOR_TARGET
#undef GWINSZ_IN_SYS_IOCTL
#endif
/* mcontext_t fields start with __ */
#ifndef USED_FOR_TARGET
#undef HAS_MCONTEXT_T_UNDERSCORES
@ -1247,7 +1253,7 @@
#endif
/* Define if your AIX linker supports a large TOC. */
/* Define if your PowerPC64 linker supports a large TOC. */
#ifndef USED_FOR_TARGET
#undef HAVE_LD_LARGE_TOC
#endif

64
gcc/configure vendored
View file

@ -8293,6 +8293,66 @@ $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5
$as_echo_n "checking whether termios.h defines TIOCGWINSZ... " >&6; }
if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <termios.h>
#ifdef TIOCGWINSZ
yes
#endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "yes" >/dev/null 2>&1; then :
ac_cv_sys_tiocgwinsz_in_termios_h=yes
else
ac_cv_sys_tiocgwinsz_in_termios_h=no
fi
rm -f conftest*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5
$as_echo "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; }
if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5
$as_echo_n "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; }
if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <sys/ioctl.h>
#ifdef TIOCGWINSZ
yes
#endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "yes" >/dev/null 2>&1; then :
ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes
else
ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no
fi
rm -f conftest*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5
$as_echo "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; }
if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then
$as_echo "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h
fi
fi
for ac_header in limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
sys/resource.h sys/param.h sys/times.h sys/stat.h \
@ -17834,7 +17894,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 17837 "configure"
#line 17897 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -17940,7 +18000,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 17943 "configure"
#line 18003 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H

View file

@ -939,6 +939,7 @@ AC_HEADER_STDC
AC_HEADER_TIME
ACX_HEADER_STRING
AC_HEADER_SYS_WAIT
AC_HEADER_TIOCGWINSZ
AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
sys/resource.h sys/param.h sys/times.h sys/stat.h \

View file

@ -1,3 +1,9 @@
2013-06-01 Janus Weil <janus@gcc.gnu.org>
Mikael Morin <mikael@gcc.gnu.org>
* error.c (get_terminal_width): Only limit the width if we're
outputting to a terminal. Try to determine width via ioctl.
2013-06-01 Tobias Burnus <burnus@net-b.de>
* decl.c (add_global_entry): Take locus.

View file

@ -30,6 +30,15 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "gfortran.h"
#ifdef HAVE_TERMIOS_H
# include <termios.h>
#endif
#ifdef GWINSZ_IN_SYS_IOCTL
# include <sys/ioctl.h>
#endif
static int suppress_errors = 0;
static int warnings_not_errors = 0;
@ -59,9 +68,26 @@ 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. */
#ifdef HAVE_UNISTD_H
if (!isatty (STDERR_FILENO))
return INT_MAX;
#endif
/* Method #1: Use ioctl (not available on all systems). */
#ifdef TIOCGWINSZ
struct winsize w;
w.ws_col = 0;
if (ioctl (0, TIOCGWINSZ, &w) == 0 && w.ws_col > 0)
return w.ws_col;
#endif
/* Method #2: Query environment variable $COLUMNS. */
const char *p = getenv ("COLUMNS");
if (p)
{
@ -69,7 +95,8 @@ get_terminal_width (void)
if (value > 0)
return value;
}
/* Use a reasonable default. */
/* If both fail, use reasonable default. */
return 80;
}