AC_CHECK_HEADERS(sys/mkdev.h)
- AC_CHECK_FUNCS(seteuid setegid setsid getsid setpgid getpgid ctermid mkfifo mknod getrlimit getlogin getgroups makedev initgroups getpwuid_r getgrgid_r ttyname_r)
+ AC_CHECK_FUNCS(seteuid setegid setsid getsid setpgid getpgid ctermid mkfifo mknod getrlimit getlogin getgroups makedev initgroups getpwuid_r getgrgid_r)
+
+ AC_MSG_CHECKING([for working ttyname_r() implementation])
+ AC_TRY_RUN([
+#include <unistd.h>
+
+int main(int argc, char *argv[])
+{
+ char buf[64];
+
+ return ttyname_r(0, buf, 64) ? 1 : 0;
+}
+ ],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_TTYNAME_R, 1, [Whether you have a working ttyname_r])
+ ],[
+ AC_MSG_RESULT([no, posix_ttyname() will be thread-unsafe])
+ ])
fi
fd = Z_LVAL_PP(z_fd);
}
#if HAVE_TTYNAME_R
-#ifdef _SC_TTY_NAME_MAX
buflen = sysconf(_SC_TTY_NAME_MAX);
-#else
- /* Arbitrary buffer size for systems which don't extrospect their tty name lengths, way overkill */
- buflen = 64;
-#endif
p = emalloc(buflen);
if (ttyname_r(fd, p, buflen)) {