Commit 35439f59 by Edward Thomson

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.
parent 263e674e
......@@ -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;
......
......@@ -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);
......
......@@ -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};
......
......@@ -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;
......
......@@ -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;
......
......@@ -133,7 +133,7 @@ int checkout_count_callback(
void tick_index(git_index *index)
{
struct timespec ts;
struct timeval times[2];
struct p_timeval times[2];
cl_assert(index->on_disk);
cl_assert(git_index_path(index));
......
......@@ -100,7 +100,7 @@ void test_core_posix__inet_pton(void)
void test_core_posix__utimes(void)
{
struct timeval times[2];
struct p_timeval times[2];
struct stat st;
time_t curtime;
int fd;
......
......@@ -1755,7 +1755,7 @@ void test_diff_workdir__with_stale_index(void)
static int touch_file(void *payload, git_buf *path)
{
struct stat st;
struct timeval times[2];
struct p_timeval times[2];
GIT_UNUSED(payload);
if (git_path_isdir(path->ptr))
......@@ -2006,7 +2006,7 @@ void test_diff_workdir__only_writes_index_when_necessary(void)
git_oid initial, first, second;
git_buf path = GIT_BUF_INIT;
struct stat st;
struct timeval times[2];
struct p_timeval times[2];
opts.flags |= GIT_DIFF_INCLUDE_UNTRACKED | GIT_DIFF_UPDATE_INDEX;
......
......@@ -54,7 +54,7 @@ void test_index_racy__write_index_just_after_file(void)
git_index *index;
git_diff *diff;
git_buf path = GIT_BUF_INIT;
struct timeval times[2];
struct p_timeval times[2];
/* Make sure we do have a timestamp */
cl_git_pass(git_repository_index(&index, g_repo));
......
......@@ -133,7 +133,7 @@ static void hack_index(char *files[])
struct stat statbuf;
git_buf path = GIT_BUF_INIT;
git_index_entry *entry;
struct timeval times[2];
struct p_timeval times[2];
time_t now;
size_t i;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment