Not all systems use st_[cm]tim field for ns resolution file timestamp
authorJunio C Hamano <gitster@pobox.com>
Sun, 8 Mar 2009 20:51:33 +0000 (13:51 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 8 Mar 2009 21:04:39 +0000 (14:04 -0700)
Some codepaths do not still use the ST_[CM]TIME_NSEC() pair of macros
introduced by the previous commit but assumes all systems use st_mtim
and st_ctim fields in "struct stat" to record nanosecond resolution part
of the file timestamps.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-fetch-pack.c
read-cache.c

index 59b0b0a..1d7e023 100644 (file)
@@ -807,7 +807,7 @@ struct ref *fetch_pack(struct fetch_pack_args *my_args,
                                die("shallow file was removed during fetch");
                } else if (st.st_mtime != mtime.sec
 #ifdef USE_NSEC
-                               || st.st_mtim.tv_nsec != mtime.nsec
+                               || ST_CTIME_NSEC(st) != mtime.nsec
 #endif
                          )
                        die("shallow file was changed during fetch");
index b819abb..7f74c8d 100644 (file)
@@ -204,9 +204,9 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st)
                changed |= CTIME_CHANGED;
 
 #ifdef USE_NSEC
-       if (ce->ce_mtime.nsec != (unsigned int)st->st_mtim.tv_nsec)
+       if (ce->ce_mtime.nsec != ST_MTIME_NSEC(*st))
                changed |= MTIME_CHANGED;
-       if (trust_ctime && ce->ce_ctime.nsec != (unsigned int)st->st_ctim.tv_nsec)
+       if (trust_ctime && ce->ce_ctime.nsec != ST_CTIME_NSEC(*st))
                changed |= CTIME_CHANGED;
 #endif