Skip to content

Commit 1e100fd

Browse files
committed
FIx for maxOS and OpenBSD
Closes #33
1 parent 52bd71d commit 1e100fd

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/udpreplay.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,11 +215,25 @@ int main(int argc, char *argv[]) {
215215

216216
if (deadline.tv_sec > now.tv_sec ||
217217
(deadline.tv_sec == now.tv_sec && deadline.tv_nsec > now.tv_nsec)) {
218+
#if _POSIX_C_SOURCE >= 200112L
218219
if (clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &deadline,
219220
nullptr) == -1) {
220221
std::cerr << "clock_nanosleep: " << strerror(errno) << std::endl;
221222
return 1;
222223
}
224+
#else
225+
timespec duration;
226+
duration.tv_sec = deadline.tv_sec - now.tv_sec;
227+
duration.tv_nsec = deadline.tv_nsec - now.tv_nsec;
228+
if (duration.tv_nsec < 0) {
229+
--duration.tv_sec;
230+
duration.tv_nsec += 1000000000L;
231+
}
232+
if (nanosleep(&duration, nullptr) == -1) {
233+
std::cerr << "nanosleep: " << strerror(errno) << std::endl;
234+
return 1;
235+
}
236+
#endif
223237
}
224238

225239
#ifdef __GLIBC__

0 commit comments

Comments
 (0)