Merge branch 'pe/time-use-gettimeofday'

time(2) on glib 2.31+, especially on Linux, goes out of sync with
higher resolution timers used for gettimeofday(2) and by the
filesystem.  Replace all calls to it with a git_time() wrapper and
use gettimeofday(2) in its implementation.

* pe/time-use-gettimeofday:
  git-compat-util: use gettimeofday(2) for time(2)
This commit is contained in:
Junio C Hamano 2023-03-28 10:51:52 -07:00
commit cdb1ef07d2

View File

@ -339,6 +339,25 @@ static inline const char *precompose_string_if_needed(const char *in)
int compat_mkdir_wo_trailing_slash(const char*, mode_t);
#endif
#ifdef time
#undef time
#endif
static inline time_t git_time(time_t *tloc)
{
struct timeval tv;
/*
* Avoid time(NULL), which can disagree with gettimeofday(2)
* and filesystem timestamps.
*/
gettimeofday(&tv, NULL);
if (tloc)
*tloc = tv.tv_sec;
return tv.tv_sec;
}
#define time git_time
#ifdef NO_STRUCT_ITIMERVAL
struct itimerval {
struct timeval it_interval;