in watchman.c [357:380]
static int block_on_read(int fd, struct timeval *timeout)
{
struct timeval now, start, elapsed, orig_timeout;
fd_set fds;
int ret = 0;
FD_ZERO(&fds);
FD_SET(fd, &fds);
if (timeout != NULL) {
gettimeofday(&start, NULL);
memcpy(&orig_timeout, timeout, sizeof(orig_timeout));
}
ret = select(fd + 1, &fds, NULL, NULL, timeout);
if (timeout != NULL) {
gettimeofday(&now, NULL);
timersub(&now, &start, &elapsed);
timersub(&orig_timeout, &elapsed, timeout);
}
return ret;
}