]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Do not use isatty on avr [PR115482]
authorDetlef Vollmann <dv@vollmann.ch>
Tue, 23 Jul 2024 08:25:22 +0000 (09:25 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 23 Jul 2024 09:25:36 +0000 (10:25 +0100)
avrlibc has an incomplete unistd.h that doesn't have isatty.
So building libstdc++ fails when compiling c++23/print.cc.
As a workaround I added a check for AVR.

libstdc++-v3/ChangeLog:

PR libstdc++/115482
* src/c++23/print.cc (__open_terminal) [__AVR__]: Do not use
isatty.

libstdc++-v3/src/c++23/print.cc

index 99a19cd45002ba5ab4a7bd0d5cf45f806ba2f477..558dc149d1253d0cd971a4eff87891e50ecad15b 100644 (file)
@@ -75,7 +75,7 @@ namespace
 #ifdef _WIN32
        if (int fd = ::_fileno(f); fd >= 0)
          return check_for_console((void*)_get_osfhandle(fd));
-#elifdef _GLIBCXX_HAVE_UNISTD_H
+#elif defined _GLIBCXX_HAVE_UNISTD_H && ! defined __AVR__
        if (int fd = (::fileno)(f); fd >= 0 && ::isatty(fd))
          return f;
 #endif
@@ -100,7 +100,7 @@ namespace
 #ifdef _WIN32
     if (auto fb = dynamic_cast<filebuf*>(sb))
       return check_for_console(fb->native_handle());
-#elifdef _GLIBCXX_HAVE_UNISTD_H
+#elif defined _GLIBCXX_HAVE_UNISTD_H && ! defined __AVR__
     if (auto fb = dynamic_cast<filebuf*>(sb))
       if (int fd = fb->native_handle(); fd >= 0 && ::isatty(fd))
        return ::fdopen(::dup(fd), "w"); // Caller must call fclose.