diff options
author | Brian Gernhardt <benji@silverinsanity.com> | 2009-03-08 23:04:28 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-03-09 00:04:41 +0300 |
commit | c567383b1e3205c895b371d42a39fbdf131032ba (patch) | |
tree | 4ebd878ee331e14ec5b7a165b53799917af833d6 | |
parent | 110c46a909fe27f5b8aff412a78cb821300fb985 (diff) |
Create USE_ST_TIMESPEC and turn it on for Darwin
Not all OSes use st_ctim and st_mtim in their struct stat. In
particular, it appears that OS X uses st_*timespec instead. So add a
Makefile variable and #define called USE_ST_TIMESPEC to switch the
USE_NSEC defines to use st_*timespec.
This also turns it on by default for OS X (Darwin) machines. Likely
this is a sane default for other BSD kernels as well, but I don't have
any to test that assumption on.
Signed-off-by: Brian Gernhardt <benji@silverinsanity.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | Makefile | 7 | ||||
-rw-r--r-- | git-compat-util.h | 5 |
2 files changed, 12 insertions, 0 deletions
@@ -126,6 +126,9 @@ all:: # randomly break unless your underlying filesystem supports those sub-second # times (my ext3 doesn't). # +# Define USE_ST_TIMESPEC if your "struct stat" uses "st_ctimespec" instead of +# "st_ctim" +# # Define NO_NSEC if your "struct stat" does not have "st_ctim.tv_nsec" # available. This automatically turns USE_NSEC off. # @@ -663,6 +666,7 @@ ifeq ($(uname_S),Darwin) endif NO_MEMMEM = YesPlease THREADED_DELTA_SEARCH = YesPlease + USE_ST_TIMESPEC = YesPlease endif ifeq ($(uname_S),SunOS) NEEDS_SOCKET = YesPlease @@ -928,6 +932,9 @@ endif ifdef NO_ST_BLOCKS_IN_STRUCT_STAT BASIC_CFLAGS += -DNO_ST_BLOCKS_IN_STRUCT_STAT endif +ifdef USE_ST_TIMESPEC + BASIC_CFLAGS += -DUSE_ST_TIMESPEC +endif ifdef NO_NSEC BASIC_CFLAGS += -DNO_NSEC endif diff --git a/git-compat-util.h b/git-compat-util.h index 9b495dcad8..c915752a24 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -389,8 +389,13 @@ void git_qsort(void *base, size_t nmemb, size_t size, #define ST_CTIME_NSEC(st) 0 #define ST_MTIME_NSEC(st) 0 #else +#ifdef USE_ST_TIMESPEC +#define ST_CTIME_NSEC(st) ((unsigned int)((st).st_ctimespec.tv_nsec)) +#define ST_MTIME_NSEC(st) ((unsigned int)((st).st_mtimespec.tv_nsec)) +#else #define ST_CTIME_NSEC(st) ((unsigned int)((st).st_ctim.tv_nsec)) #define ST_MTIME_NSEC(st) ((unsigned int)((st).st_mtim.tv_nsec)) #endif +#endif #endif |