summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2015-11-16 14:16:50 +0100
committerNikos Mavrogiannopoulos <nmav@redhat.com>2015-11-16 15:02:20 +0100
commit1d33f7c03445835c14c5ef80f69243a93b1cf09b (patch)
tree04a479e40c1c9e144d8d33293c0f5c08cbe80f42
parent44c3ba7263d8cf4922cc2d774e271cb1933bfc88 (diff)
downloadgnutls-1d33f7c03445835c14c5ef80f69243a93b1cf09b.tar.gz
utils: backported sec_sleep()
-rw-r--r--tests/utils.c32
-rw-r--r--tests/utils.h1
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 */