Browse Source

Tests/CTestTestFdSetSize: Support plain POSIX

When compiling in ISO C mode functions from newer POSIX standards such as
usleep() and nanosleep() aren't available.
Fortunately select() allows timing out with microsecond precision.
Raul Tambre 3 years ago
parent
commit
324ca5b489
1 changed files with 12 additions and 2 deletions
  1. 12 2
      Tests/CTestTestFdSetSize/sleep.c

+ 12 - 2
Tests/CTestTestFdSetSize/sleep.c

@@ -1,7 +1,11 @@
 #if defined(_WIN32)
 #  include <windows.h>
-#else
+#elif _XOPEN_SOURCE >= 500 || defined(_ALL_SOURCE)
 #  include <unistd.h>
+#else
+#  include <time.h>
+
+#  include <sys/select.h>
 #endif
 
 /* sleeps for 0.1 second */
@@ -9,8 +13,14 @@ int main(int argc, char** argv)
 {
 #if defined(_WIN32)
   Sleep(100);
-#else
+#elif _XOPEN_SOURCE >= 500 || defined(_ALL_SOURCE)
   usleep(100 * 1000);
+#else
+  struct timeval tv;
+  tv.tv_sec = 0;
+  tv.tv_usec = 100 * 1000;
+
+  select(0, NULL, NULL, NULL, &tv);
 #endif
   return 0;
 }