diff options
author | Janne Blomqvist <jb@gcc.gnu.org> | 2011-01-27 22:05:45 +0200 |
---|---|---|
committer | Janne Blomqvist <jb@gcc.gnu.org> | 2011-01-27 22:05:45 +0200 |
commit | 6a0f6e7799c988524d32767047ca64d05a93adaf (patch) | |
tree | 5391b3d170af8323dd4003f8bd688be43384821f /libgfortran/io/unix.c | |
parent | 5f02b9dbcd0669d7c13999a89694520113c2cc12 (diff) | |
download | gcc-6a0f6e7799c988524d32767047ca64d05a93adaf.zip gcc-6a0f6e7799c988524d32767047ca64d05a93adaf.tar.gz gcc-6a0f6e7799c988524d32767047ca64d05a93adaf.tar.bz2 |
PR 47432 Use ttyname_r() if available
From-SVN: r169337
Diffstat (limited to 'libgfortran/io/unix.c')
-rw-r--r-- | libgfortran/io/unix.c | 31 |
1 files changed, 21 insertions, 10 deletions
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 +} + |