diff options
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | builtin-fetch-pack.c | 4 | ||||
-rw-r--r-- | git-compat-util.h | 9 | ||||
-rw-r--r-- | read-cache.c | 29 | ||||
-rw-r--r-- | unpack-trees.c | 2 |
5 files changed, 22 insertions, 30 deletions
@@ -126,6 +126,9 @@ all:: # randomly break unless your underlying filesystem supports those sub-second # times (my ext3 doesn't). # +# Define NO_NSEC if your "struct stat" does not have "st_ctim.tv_nsec" +# available. This automatically turns USE_NSEC off. +# # Define USE_STDEV below if you want git to care about the underlying device # change being considered an inode change from the update-index perspective. # @@ -737,6 +740,7 @@ ifeq ($(uname_S),AIX) NO_MEMMEM = YesPlease NO_MKDTEMP = YesPlease NO_STRLCPY = YesPlease + NO_NSEC = YesPlease FREAD_READS_DIRECTORIES = UnfortunatelyYes INTERNAL_QSORT = UnfortunatelyYes NEEDS_LIBICONV=YesPlease @@ -802,6 +806,7 @@ ifneq (,$(findstring MINGW,$(uname_S))) RUNTIME_PREFIX = YesPlease NO_POSIX_ONLY_PROGRAMS = YesPlease NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease + NO_NSEC = YesPlease COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/regex -Icompat/fnmatch COMPAT_CFLAGS += -DSNPRINTF_SIZE_CORR=1 COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\" @@ -923,6 +928,9 @@ endif ifdef NO_ST_BLOCKS_IN_STRUCT_STAT BASIC_CFLAGS += -DNO_ST_BLOCKS_IN_STRUCT_STAT endif +ifdef NO_NSEC + BASIC_CFLAGS += -DNO_NSEC +endif ifdef NO_C99_FORMAT BASIC_CFLAGS += -DNO_C99_FORMAT endif diff --git a/builtin-fetch-pack.c b/builtin-fetch-pack.c index 3b210c7fdf..59b0b0a796 100644 --- a/builtin-fetch-pack.c +++ b/builtin-fetch-pack.c @@ -801,9 +801,7 @@ struct ref *fetch_pack(struct fetch_pack_args *my_args, int fd; mtime.sec = st.st_mtime; -#ifdef USE_NSEC - mtime.nsec = st.st_mtim.tv_nsec; -#endif + mtime.nsec = ST_MTIME_NSEC(st); if (stat(shallow, &st)) { if (mtime.sec) die("shallow file was removed during fetch"); diff --git a/git-compat-util.h b/git-compat-util.h index 079cbe9440..9b495dcad8 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -384,4 +384,13 @@ void git_qsort(void *base, size_t nmemb, size_t size, # define FORCE_DIR_SET_GID 0 #endif +#ifdef NO_NSEC +#undef USE_NSEC +#define ST_CTIME_NSEC(st) 0 +#define ST_MTIME_NSEC(st) 0 +#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 diff --git a/read-cache.c b/read-cache.c index 91f1d03c09..b819abbd00 100644 --- a/read-cache.c +++ b/read-cache.c @@ -69,13 +69,8 @@ void fill_stat_cache_info(struct cache_entry *ce, struct stat *st) { ce->ce_ctime.sec = (unsigned int)st->st_ctime; ce->ce_mtime.sec = (unsigned int)st->st_mtime; -#ifdef USE_NSEC - ce->ce_ctime.nsec = (unsigned int)st->st_ctim.tv_nsec; - ce->ce_mtime.nsec = (unsigned int)st->st_mtim.tv_nsec; -#else - ce->ce_ctime.nsec = 0; - ce->ce_mtime.nsec = 0; -#endif + ce->ce_ctime.nsec = ST_CTIME_NSEC(*st); + ce->ce_mtime.nsec = ST_MTIME_NSEC(*st); ce->ce_dev = st->st_dev; ce->ce_ino = st->st_ino; ce->ce_uid = st->st_uid; @@ -1183,13 +1178,8 @@ static void convert_from_disk(struct ondisk_cache_entry *ondisk, struct cache_en ce->ce_ctime.sec = ntohl(ondisk->ctime.sec); ce->ce_mtime.sec = ntohl(ondisk->mtime.sec); -#ifdef USE_NSEC ce->ce_ctime.nsec = ntohl(ondisk->ctime.nsec); ce->ce_mtime.nsec = ntohl(ondisk->mtime.nsec); -#else - ce->ce_ctime.nsec = 0; - ce->ce_mtime.nsec = 0; -#endif ce->ce_dev = ntohl(ondisk->dev); ce->ce_ino = ntohl(ondisk->ino); ce->ce_mode = ntohl(ondisk->mode); @@ -1309,11 +1299,7 @@ int read_index_from(struct index_state *istate, const char *path) dst_offset += ce_size(ce); } istate->timestamp.sec = st.st_mtime; -#ifdef USE_NSEC - istate->timestamp.nsec = (unsigned int)st.st_mtim.tv_nsec; -#else - istate->timestamp.nsec = 0; -#endif + istate->timestamp.nsec = ST_MTIME_NSEC(st); while (src_offset <= mmap_size - 20 - 8) { /* After an array of active_nr index entries, @@ -1500,13 +1486,8 @@ static int ce_write_entry(git_SHA_CTX *c, int fd, struct cache_entry *ce) ondisk->ctime.sec = htonl(ce->ce_ctime.sec); ondisk->mtime.sec = htonl(ce->ce_mtime.sec); -#ifdef USE_NSEC ondisk->ctime.nsec = htonl(ce->ce_ctime.nsec); ondisk->mtime.nsec = htonl(ce->ce_mtime.nsec); -#else - ondisk->ctime.nsec = 0; - ondisk->mtime.nsec = 0; -#endif ondisk->dev = htonl(ce->ce_dev); ondisk->ino = htonl(ce->ce_ino); ondisk->mode = htonl(ce->ce_mode); @@ -1583,9 +1564,7 @@ int write_index(struct index_state *istate, int newfd) if (ce_flush(&c, newfd) || fstat(newfd, &st)) return -1; istate->timestamp.sec = (unsigned int)st.st_ctime; -#ifdef USE_NSEC - istate->timestamp.nsec = (unsigned int)st.st_ctim.tv_nsec; -#endif + istate->timestamp.nsec = ST_CTIME_NSEC(st); return 0; } diff --git a/unpack-trees.c b/unpack-trees.c index 9fe0cd5f9b..da2e3c0915 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -362,9 +362,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options o->result.initialized = 1; if (o->src_index) { o->result.timestamp.sec = o->src_index->timestamp.sec; -#ifdef USE_NSEC o->result.timestamp.nsec = o->src_index->timestamp.nsec; -#endif } o->merge_size = len; |