diff options
| author | Andreas Schneider <mail@cynapses.org> | 2009-12-01 16:57:49 +0100 |
|---|---|---|
| committer | Andreas Schneider <mail@cynapses.org> | 2009-12-02 00:23:20 +0100 |
| commit | 176778bb1c86891339a9286db06ec6d008b85477 (patch) | |
| tree | 5462be239957ffcd526e6521a2f5ec38db2f5438 | |
| parent | e5bf645010f74408060ced7d0c327a5f65823d1b (diff) | |
Added gettimeofday for Windows.
Thanks to Patrick Spendrin.
| -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 c8bfee35..b651a792 100644 --- a/include/libssh/priv.h +++ b/include/libssh/priv.h @@ -185,6 +185,11 @@ int match_hostname(const char *host, const char *pattern, unsigned int len); /* 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 76bbafa4..09a691b3 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> |
