From 6a0f6e7799c988524d32767047ca64d05a93adaf Mon Sep 17 00:00:00 2001 From: Janne Blomqvist Date: Thu, 27 Jan 2011 22:05:45 +0200 Subject: PR 47432 Use ttyname_r() if available From-SVN: r169337 --- libgfortran/io/unix.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'libgfortran/io/unix.c') diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c index 950b7a2..004e860 100644 --- a/libgfortran/io/unix.c +++ b/libgfortran/io/unix.c @@ -1811,18 +1811,29 @@ stream_isatty (stream *s) return isatty (((unix_stream *) s)->fd); } -char * -#ifdef HAVE_TTYNAME -stream_ttyname (stream *s) -{ - return ttyname (((unix_stream *) s)->fd); -} +int +stream_ttyname (stream *s __attribute__ ((unused)), + char * buf __attribute__ ((unused)), + size_t buflen __attribute__ ((unused))) +{ +#ifdef HAVE_TTYNAME_R + return ttyname_r (((unix_stream *) s)->fd, buf, buflen); +#elif defined HAVE_TTYNAME + char *p; + size_t plen; + p = ttyname (((unix_stream *) s)->fd); + if (!p) + return errno; + plen = strlen (p); + if (buflen < plen) + plen = buflen; + memcpy (buf, p, plen); + return 0; #else -stream_ttyname (stream *s __attribute__ ((unused))) -{ - return NULL; -} + return ENOSYS; #endif +} + -- cgit v1.1