+case "$host_os" in
+ gnu* | linux*)
+ AC_DEFINE(_XOPEN_SOURCE, 600)
+ ;;
+ aix*)
+ # ... and always needed...
+ AC_DEFINE(__USE_LARGEFILE64)
+ AC_DEFINE(_LARGE_FILES)
+ AC_DEFINE(_LARGE_FILE_API)
+ AC_DEFINE(_ALL_SOURCE)
+ AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
+ ;;
+esac
+
+AC_MSG_CHECKING(for symlink support)
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/stat.h>
+],[
+#ifndef S_ISLNK
+#error
+#endif
+],
+ symlink_support="yes",
+ symlink_support="no"
+)
+AC_MSG_RESULT($symlink_support)
+
+if test x$symlink_support = xyes; then
+ AC_MSG_CHECKING(if readlink returns int)
+ AC_TRY_COMPILE([
+#include <unistd.h>
+ ],[
+ extern int readlink(const char *, char *, size_t);
+ ],
+ readlink_returns_int="yes",
+ readlink_returns_int="no"
+ )
+ AC_MSG_RESULT($readlink_returns_int)
+ if test x$readlink_returns_int = no; then
+ AC_DEFINE(HAVE_POSIX_1003_READLINK,
+ 1,
+ [readlink returns ssize_t])
+ fi
+fi
+
+AC_MSG_CHECKING(if readlink returns ssize_t)
+AC_TRY_COMPILE([
+ #include <unistd.h>
+],[
+ ssize_t readlink(const char *, char *, size_t);
+],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_POSIX_1003_READLINK, 1, [readlink returns ssize_t])
+],[
+ AC_MSG_RESULT([no])
+])
+