X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fsignal%2Fgetitimer.c;h=36d1eb9dc6e991af1ed4b5d0c85b851eb243d697;hb=0847902ab99065a48f9bd3729b6e676288dfd69e;hp=222d113e8602a82a6b2cd3f3001f60a16f54e2d3;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01;p=musl diff --git a/src/signal/getitimer.c b/src/signal/getitimer.c index 222d113e..36d1eb9d 100644 --- a/src/signal/getitimer.c +++ b/src/signal/getitimer.c @@ -3,10 +3,16 @@ int getitimer(int which, struct itimerval *old) { - int ret; - long kold[4]; - - if (!(ret = syscall2(__NR_getitimer, which, (long)&kold))) - *old = (struct itimerval){ { kold[0], kold[1] }, { kold[2], kold[3] } }; - return ret; + if (sizeof(time_t) > sizeof(long)) { + long old32[4]; + int r = __syscall(SYS_getitimer, which, old32); + if (!r) { + old->it_interval.tv_sec = old32[0]; + old->it_interval.tv_usec = old32[1]; + old->it_value.tv_sec = old32[2]; + old->it_value.tv_usec = old32[3]; + } + return __syscall_ret(r); + } + return syscall(SYS_getitimer, which, old); }