summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/node.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/node.cc b/src/node.cc
index 91f07e447f..b44f021084 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -108,6 +108,9 @@
#include <unistd.h> // STDIN_FILENO, STDERR_FILENO
#endif
+#ifdef __PASE__
+#include <sys/ioctl.h> // ioctl
+#endif
// ========== global C++ headers ==========
#include <cerrno>
@@ -555,7 +558,14 @@ inline void PlatformInit() {
while (s.flags == -1 && errno == EINTR); // NOLINT
CHECK_NE(s.flags, -1);
+#ifdef __PASE__
+ // On IBMi PASE isatty() always returns true for stdin, stdout and stderr.
+ // Use ioctl() instead to identify whether it's actually a TTY.
+ if (ioctl(fd, TXISATTY + 0x81, nullptr) == -1 && errno == ENOTTY)
+ continue;
+#else
if (!isatty(fd)) continue;
+#endif
s.isatty = true;
do