Add support for building tinc with MSVC
[tinc] / src / dropin.c
index a4f7a65..1489ee6 100644 (file)
@@ -1,7 +1,7 @@
 /*
     dropin.c -- a set of drop-in replacements for libc functions
     Copyright (C) 2000-2005 Ivo Timmermans,
-                  2000-2016 Guus Sliepen <guus@tinc-vpn.org>
+                  2000-2022 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -20,7 +20,9 @@
 
 #include "system.h"
 
+#ifndef HAVE_ASPRINTF
 #include "xalloc.h"
+#endif
 
 #ifndef HAVE_DAEMON
 /*
@@ -50,8 +52,9 @@ int daemon(int nochdir, int noclose) {
        }
 
        /* If we are the parent, terminate */
-       if(pid)
+       if(pid) {
                exit(0);
+       }
 
        /* Detach by becoming the new process group leader */
        if(setsid() < 0) {
@@ -81,6 +84,8 @@ int daemon(int nochdir, int noclose) {
 
        return 0;
 #else
+       (void)nochdir;
+       (void)noclose;
        return -1;
 #endif
 }
@@ -108,8 +113,9 @@ int vasprintf(char **buf, const char *fmt, va_list ap) {
        status = vsnprintf(*buf, len, fmt, aq);
        va_end(aq);
 
-       if(status >= 0)
+       if(status >= 0) {
                *buf = xrealloc(*buf, status + 1);
+       }
 
        if(status > len - 1) {
                len = status + 1;
@@ -140,9 +146,11 @@ int gettimeofday(struct timeval *tv, void *tz) {
 }
 #endif
 
-#ifndef HAVE_NANOSLEEP
-int nanosleep(const struct timespec *req, struct timespec *rem) {
-       struct timeval tv = {req->tv_sec, req->tv_nsec / 1000};
-       return select(0, NULL, NULL, NULL, &tv);
-}
+bool sleep_millis(unsigned int ms) {
+#ifdef _MSC_VER
+       Sleep(ms);
+       return true;
+#else
+       return !usleep(ms * 1000);
 #endif
+}