diff options
| author | Jonas 'Sortie' Termansen <sortie@maxsi.org> | 2014-08-29 09:42:41 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2014-08-29 12:25:28 -0700 |
| commit | 0950f08806208b4e3d0aff5f4f7d497637ba4cab (patch) | |
| tree | 44b527aef45080dafb1c051dbd12ee59fd18201c /pack-objects.c | |
| parent | 710cdba60d50745bde8e86ff0b06490a4d24efcf (diff) | |
| download | git-jt/timer-settime.tar.gz | |
use timer_settime() for new platformsjt/timer-settime
setitimer() is an obsolescent XSI interface and may be removed in a
future standard. New applications should use the core POSIX
timer_settime() instead.
It's important that code doesn't simply check if timer_settime() is
available as it can give false positives. Some systems like
contemporary OpenBSD provides the function, but it unconditionally
fails with ENOSYS at runtime.
Clean up the progress reporting and change it to use timer_settime(),
which will fall back to setitimer() automatically if timer_settime()
is not supported. (see git-compat-util.h for how it does this). If
both functions are not present, then git-compat-util.h provides
replacements which will always fail with ENOSYS.
The approach used here enables us to use a single API (timer_settime)
without having to worry about checking for #ifdefs or if blocks which
make it an unreadable nightmare. The major downside is for systems
without timer_settime() support, they may fall back on a wrapped
implementation which could have subtle differences. This should be a
minor issue as almost all modern systems provide timer_settime()
support.
Note that this change means that git should never use setitimer()
on its own now, as the fallback implementation of timer_settime()
assumes that it is the sole user of ITIMER_REAL, and timer_delete()
will reset the ITIMER_REAL.
Signed-off-by: Jonas 'Sortie' Termansen <sortie@maxsi.org>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'pack-objects.c')
0 files changed, 0 insertions, 0 deletions
