diff options
author | Axel Rasmussen <axelrasmussen@google.com> | 2015-09-18 23:48:22 -0700 |
---|---|---|
committer | Axel Rasmussen <axelrasmussen@google.com> | 2015-09-18 23:56:19 -0700 |
commit | 28cdb3153c8c6d651c5b2afcf315a2d188e9fde9 (patch) | |
tree | ea7d5afd5dfb41cf5fa39eb6cd5a52609e4164a6 | |
parent | 0226f7dd36c990e9bc1632adbc655fefc797513a (diff) | |
download | libgit2-28cdb3153c8c6d651c5b2afcf315a2d188e9fde9.tar.gz |
apple: work around non-POSIX struct stat on OS X.
-rw-r--r-- | src/fileops.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/fileops.c b/src/fileops.c index da1d8a0bb..5b54298fa 100644 --- a/src/fileops.c +++ b/src/fileops.c @@ -359,7 +359,7 @@ GIT_INLINE(int) mkdir_validate_mode( return 0; } - + GIT_INLINE(int) mkdir_canonicalize( git_buf *path, uint32_t flags) @@ -1027,6 +1027,11 @@ int git_futils_filestamp_check( git_futils_filestamp *stamp, const char *path) { struct stat st; +#if defined(__APPLE__) + const struct timespec *statmtime = &st.st_mtimespec; +#else + const struct timespec *statmtime = &st.st_mtim; +#endif /* if the stamp is NULL, then always reload */ if (stamp == NULL) @@ -1035,17 +1040,17 @@ int git_futils_filestamp_check( if (p_stat(path, &st) < 0) return GIT_ENOTFOUND; - if (stamp->mtime.tv_sec == st.st_mtim.tv_sec && + if (stamp->mtime.tv_sec == statmtime->tv_sec && #if defined(GIT_USE_NSEC) - stamp->mtime.tv_nsec == st.st_mtim.tv_nsec && + stamp->mtime.tv_nsec == statmtime->tv_nsec && #endif stamp->size == (git_off_t)st.st_size && stamp->ino == (unsigned int)st.st_ino) return 0; - stamp->mtime.tv_sec = st.st_mtim.tv_sec; + stamp->mtime.tv_sec = statmtime->tv_sec; #if defined(GIT_USE_NSEC) - stamp->mtime.tv_nsec = st.st_mtim.tv_nsec; + stamp->mtime.tv_nsec = statmtime->tv_nsec; #endif stamp->size = (git_off_t)st.st_size; stamp->ino = (unsigned int)st.st_ino; @@ -1068,8 +1073,14 @@ void git_futils_filestamp_set( void git_futils_filestamp_set_from_stat( git_futils_filestamp *stamp, struct stat *st) { +#if defined(__APPLE__) + const struct timespec *statmtime = &st->st_mtimespec; +#else + const struct timespec *statmtime = &st->st_mtim; +#endif + if (st) { - stamp->mtime = st->st_mtim; + stamp->mtime = *statmtime; stamp->size = (git_off_t)st->st_size; stamp->ino = (unsigned int)st->st_ino; } else { |