diff options
-rw-r--r-- | include/libssh/priv.h | 5 | ||||
-rw-r--r-- | libssh/misc.c | 16 | ||||
-rw-r--r-- | libssh/pcap.c | 2 |
3 files changed, 23 insertions, 0 deletions
diff --git a/include/libssh/priv.h b/include/libssh/priv.h index 97500fd4..d86c0d96 100644 --- a/include/libssh/priv.h +++ b/include/libssh/priv.h @@ -203,6 +203,11 @@ int match_hostname(const char *host, const char *pattern, unsigned int len); int message_handle(ssh_session session, void *user, uint8_t type, ssh_buffer packet); /* log.c */ +/* misc.c */ +#ifdef _WIN32 +int gettimeofday(struct timeval *__p, void *__t); +#endif /* _WIN32 */ + #ifndef __FUNCTION__ #if defined(__SUNPRO_C) #define __FUNCTION__ __func__ diff --git a/libssh/misc.c b/libssh/misc.c index 63ba9465..f2bd5edf 100644 --- a/libssh/misc.c +++ b/libssh/misc.c @@ -95,6 +95,22 @@ char *ssh_get_user_home_dir(void) { return 1; } + +#define SSH_USEC_IN_SEC 1000000LL +#define SSH_SECONDS_SINCE_1601 11644473600LL + +int gettimeofday(struct timeval *__p, void *__t) { + union { + unsigned long long ns100; /* time since 1 Jan 1601 in 100ns units */ + FILETIME ft; + } now; + + GetSystemTimeAsFileTime (&now.ft); + __p->tv_usec = (long) ((now.ns100 / 10LL) % SSH_USEC_IN_SEC); + __p->tv_sec = (long)(((now.ns100 / 10LL ) / SSH_USEC_IN_SEC) - SSH_SECONDS_SINCE_1601); + + return (0); +} #else /* _WIN32 */ char *ssh_get_user_home_dir(void) { char *szPath = NULL; diff --git a/libssh/pcap.c b/libssh/pcap.c index c7cff7de..a9b00539 100644 --- a/libssh/pcap.c +++ b/libssh/pcap.c @@ -30,8 +30,10 @@ #ifdef WITH_PCAP #include <stdio.h> +#ifndef _WIN32 #include <sys/time.h> #include <sys/socket.h> +#endif #include <errno.h> |