Proper check and dropin replacement for usleep().
authorGuus Sliepen <guus@tinc-vpn.org>
Wed, 12 Jan 2011 19:57:14 +0000 (20:57 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Wed, 12 Jan 2011 19:57:14 +0000 (20:57 +0100)
configure.in
lib/dropin.c
lib/dropin.h

index 8e1ae87e857a36e9ae3c6471adc9858318f824cd..078a7f1d2cfc476e57bb20babb07dfa698a79beb 100644 (file)
@@ -128,7 +128,7 @@ dnl Checks for library functions.
 AC_FUNC_MEMCMP
 AC_FUNC_ALLOCA
 AC_TYPE_SIGNAL
-AC_CHECK_FUNCS([asprintf daemon fchmod flock ftime fork get_current_dir_name gettimeofday mlockall putenv random select strdup strerror strsignal strtol system unsetenv vsyslog writev],
+AC_CHECK_FUNCS([asprintf daemon fchmod flock ftime fork get_current_dir_name gettimeofday mlockall putenv random select strdup strerror strsignal strtol system unsetenv usleep vsyslog writev],
   [], [], [#include "have.h"]
 )
 AC_FUNC_MALLOC
index 52fb5b8675bd3799eb8177e0df7222f4ecd5edbf..1bad05cd43e6fee4c88937f0a69577741819aca6 100644 (file)
@@ -164,9 +164,10 @@ int gettimeofday(struct timeval *tv, void *tz) {
 }
 #endif
 
-#ifdef HAVE_MINGW
+#ifndef HAVE_USLEEP
 int usleep(long usec) {
-       Sleep(usec / 1000);
+       struct timeval tv = {usec / 1000000, (usec / 1000) % 1000};
+       select(0, NULL, NULL, NULL, &tv);
        return 0;
 }
 #endif
index d5cf6d2c104de54cc9c9bf42836209fb69a2f713..a4d924803130321ec1a1ef36e96661f6d276b76c 100644 (file)
@@ -41,7 +41,7 @@ extern int vasprintf(char **, const char *, va_list ap);
 extern int gettimeofday(struct timeval *, void *);
 #endif
 
-#ifdef HAVE_MINGW
+#ifndef HAVE_USLEEP
 extern int usleep(long);
 #endif