diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2015-11-16 14:16:50 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2015-11-16 15:02:20 +0100 |
commit | 1d33f7c03445835c14c5ef80f69243a93b1cf09b (patch) | |
tree | 04a479e40c1c9e144d8d33293c0f5c08cbe80f42 | |
parent | 44c3ba7263d8cf4922cc2d774e271cb1933bfc88 (diff) | |
download | gnutls-1d33f7c03445835c14c5ef80f69243a93b1cf09b.tar.gz |
utils: backported sec_sleep()
-rw-r--r-- | tests/utils.c | 32 | ||||
-rw-r--r-- | tests/utils.h | 1 |
2 files changed, 33 insertions, 0 deletions
diff --git a/tests/utils.c b/tests/utils.c index b61321d39a..65ceafd857 100644 --- a/tests/utils.c +++ b/tests/utils.c @@ -27,6 +27,18 @@ #include <stdio.h> #include <stdlib.h> #include <stdarg.h> +#include <time.h> +#include <unistd.h> +#include <errno.h> +#ifndef _WIN32 +# include <netinet/in.h> +# include <sys/socket.h> +#else +#ifdef _WIN32 +# include <windows.h> /* for Sleep */ +# include <winbase.h> +#endif +#endif #include "utils.h" @@ -54,6 +66,26 @@ void fail(const char *format, ...) exit(1); } +void sec_sleep(int sec) +{ + int ret; +#ifdef HAVE_NANOSLEEP + struct timespec ts; + + ts.tv_sec = sec; + ts.tv_nsec = 0; + do { + ret = nanosleep(&ts, NULL); + } while (ret == -1 && errno == EINTR); + if (ret == -1) + abort(); +#else + do { + ret = sleep(sec); + } while (ret == -1 && errno == EINTR); +#endif +} + void success(const char *format, ...) { char str[1024]; diff --git a/tests/utils.h b/tests/utils.h index 7d89e8ce97..8f3ac3fc97 100644 --- a/tests/utils.h +++ b/tests/utils.h @@ -59,5 +59,6 @@ extern void binprint(const void *str, size_t len); /* This must be implemented elsewhere. */ extern void doit(void); +void sec_sleep(int sec); #endif /* UTILS_H */ |