diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2025-05-17 22:53:01 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska@appnovation.com> | 2025-05-17 22:53:01 +0000 |
| commit | 0166e83ac731a0c5803db22471a2c936b0567a64 (patch) | |
| tree | 05a3ed93771fc83c72351ee78698f4b07701a36e /src/libstddjb | |
| parent | f40d8d198eea1d91f092c09ee738f751ada741bc (diff) | |
| download | skalibs-0166e83ac731a0c5803db22471a2c936b0567a64.tar.gz | |
Clamp setitimer to 1e8 seconds because MacOS
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/libstddjb')
| -rw-r--r-- | src/libstddjb/alarm_milliseconds.c | 8 | ||||
| -rw-r--r-- | src/libstddjb/alarm_timeout.c | 10 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/libstddjb/alarm_milliseconds.c b/src/libstddjb/alarm_milliseconds.c index 0628518..c541f8e 100644 --- a/src/libstddjb/alarm_milliseconds.c +++ b/src/libstddjb/alarm_milliseconds.c @@ -36,11 +36,17 @@ int alarm_milliseconds (unsigned int t) #ifdef SKALIBS_HASITIMER #include <sys/time.h> +#include <errno.h> int alarm_milliseconds (unsigned int t) { struct itimerval it = { .it_interval = { .tv_sec = 0, .tv_usec = 0 }, .it_value = { .tv_sec = t / 1000, .tv_usec = 1000 * (t % 1000) } } ; - if (setitimer(ITIMER_REAL, &it, 0) < 0) return 0 ; + if (setitimer(ITIMER_REAL, &it, 0) < 0) + { + if (errno != EINVAL) return 0 ; + it.it_Value.tv_sec = 9999999 ; + if (setitimer(ITIMER_REAL, &it, 0) < 0) return 0 ; + } return 1 ; } diff --git a/src/libstddjb/alarm_timeout.c b/src/libstddjb/alarm_timeout.c index 8ce5d3d..f887121 100644 --- a/src/libstddjb/alarm_timeout.c +++ b/src/libstddjb/alarm_timeout.c @@ -42,8 +42,9 @@ int alarm_timeout (tain const *tto) #else #ifdef SKALIBS_HASITIMER -#include <limits.h> #include <sys/time.h> +#include <errno.h> +#include <limits.h> int alarm_timeout (tain const *tto) { @@ -53,7 +54,12 @@ int alarm_timeout (tain const *tto) it.it_value.tv_sec = INT_MAX ; it.it_value.tv_usec = 0 ; } - if (setitimer(ITIMER_REAL, &it, 0) < 0) return 0 ; + if (setitimer(ITIMER_REAL, &it, 0) < 0) + { + if (errno != EINVAL) return 0 ; + it.it_Value.tv_sec = 9999999 ; + if (setitimer(ITIMER_REAL, &it, 0) < 0) return 0 ; + } return 1 ; } |
