diff options
| author | Edward Thomson <ethomson@github.com> | 2016-02-11 12:24:21 -0800 |
|---|---|---|
| committer | Edward Thomson <ethomson@github.com> | 2016-02-12 10:34:15 -0800 |
| commit | 35439f5997c41d0c50d58997c2167ee93aad6c30 (patch) | |
| tree | 131598ee3fa2374d4010828fc0407568fe80e0f8 /src | |
| parent | 263e674ec6701b774d8f464150a9d30650c6da46 (diff) | |
| download | libgit2-35439f5997c41d0c50d58997c2167ee93aad6c30.tar.gz | |
win32: introduce p_timeval that isn't stupid
Windows defines `timeval` with `long`, which we cannot
sanely cope with. Instead, use a custom timeval struct.
Diffstat (limited to 'src')
| -rw-r--r-- | src/unix/posix.h | 4 | ||||
| -rw-r--r-- | src/win32/posix.h | 5 | ||||
| -rw-r--r-- | src/win32/posix_w32.c | 4 | ||||
| -rw-r--r-- | src/win32/w32_util.h | 2 | ||||
| -rw-r--r-- | src/win32/win32-compat.h | 7 |
5 files changed, 16 insertions, 6 deletions
diff --git a/src/unix/posix.h b/src/unix/posix.h index 6633689bc..83edf2b7e 100644 --- a/src/unix/posix.h +++ b/src/unix/posix.h @@ -52,8 +52,10 @@ extern char *p_realpath(const char *, char *); #define p_localtime_r(c, r) localtime_r(c, r) #define p_gmtime_r(c, r) gmtime_r(c, r) +#define p_timeval timeval + #ifdef HAVE_FUTIMENS -GIT_INLINE(int) p_futimes(int f, const struct timeval t[2]) +GIT_INLINE(int) p_futimes(int f, const struct p_timeval t[2]) { struct timespec s[2]; s[0].tv_sec = t[0].tv_sec; diff --git a/src/win32/posix.h b/src/win32/posix.h index ac98fd864..732128bb0 100644 --- a/src/win32/posix.h +++ b/src/win32/posix.h @@ -9,6 +9,7 @@ #include "common.h" #include "../posix.h" +#include "win32-compat.h" #include "path_w32.h" #include "utf-conv.h" #include "dir.h" @@ -20,8 +21,8 @@ typedef SOCKET GIT_SOCKET; extern int p_lstat(const char *file_name, struct stat *buf); extern int p_stat(const char* path, struct stat* buf); -extern int p_utimes(const char *filename, const struct timeval times[2]); -extern int p_futimes(int fd, const struct timeval times[2]); +extern int p_utimes(const char *filename, const struct p_timeval times[2]); +extern int p_futimes(int fd, const struct p_timeval times[2]); extern int p_readlink(const char *path, char *buf, size_t bufsiz); extern int p_symlink(const char *old, const char *new); diff --git a/src/win32/posix_w32.c b/src/win32/posix_w32.c index 414cb4701..d743e8fc8 100644 --- a/src/win32/posix_w32.c +++ b/src/win32/posix_w32.c @@ -210,7 +210,7 @@ int p_lstat_posixly(const char *filename, struct stat *buf) return do_lstat(filename, buf, true); } -int p_utimes(const char *filename, const struct timeval times[2]) +int p_utimes(const char *filename, const struct p_timeval times[2]) { int fd, error; @@ -223,7 +223,7 @@ int p_utimes(const char *filename, const struct timeval times[2]) return error; } -int p_futimes(int fd, const struct timeval times[2]) +int p_futimes(int fd, const struct p_timeval times[2]) { HANDLE handle; FILETIME atime = {0}, mtime = {0}; diff --git a/src/win32/w32_util.h b/src/win32/w32_util.h index 727ed1cef..b095939a1 100644 --- a/src/win32/w32_util.h +++ b/src/win32/w32_util.h @@ -96,7 +96,7 @@ GIT_INLINE(void) git_win32__filetime_to_timespec( } GIT_INLINE(void) git_win32__timeval_to_filetime( - FILETIME *ft, const struct timeval tv) + FILETIME *ft, const struct p_timeval tv) { long long ticks = (tv.tv_sec * 10000000LL) + (tv.tv_usec * 10LL) + 116444736000000000LL; diff --git a/src/win32/win32-compat.h b/src/win32/win32-compat.h index d3a5b68a3..dff1f45be 100644 --- a/src/win32/win32-compat.h +++ b/src/win32/win32-compat.h @@ -13,6 +13,13 @@ #include <sys/stat.h> #include <sys/types.h> +typedef long suseconds_t; + +struct p_timeval { + time_t tv_sec; + suseconds_t tv_usec; +}; + struct p_timespec { time_t tv_sec; long tv_nsec; |
