Build: probe for broken poll() timing implementation
[exim.git] / src / src / buildconfig.c
index 310798fdd30e897f055e596be02db7de44c66fd6..3d404f100865e59e6519a2ee3f7e25d248ad4fa0 100644 (file)
@@ -36,6 +36,8 @@ normally called independently. */
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
+#include <sys/time.h>
+#include <poll.h>
 #include <pwd.h>
 #include <grp.h>
 
@@ -956,6 +958,25 @@ if (have_auth)
     "#define SUPPORT_CRYPTEQ\n");
   }
 
+/* Check poll() for timer functionality.
+Some OS' have released with it broken. */
+
+  {
+  struct timeval before, after;
+  int rc;
+  size_t us;
+
+  gettimeofday(&before, NULL);
+  rc = poll(NULL, 0, 500);
+  gettimeofday(&after, NULL);
+
+  us = (after.tv_sec - before.tv_sec) * 1000000 +
+    (after.tv_usec - before.tv_usec);
+
+  if (us < 400000)
+    fprintf(new, "#define NO_POLL_H\n");
+  }
+
 /* End off */
 
 fprintf(new, "\n/* End of config.h */\n");