diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2026-05-11 09:10:11 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska-skaware@skarnet.org> | 2026-05-11 09:10:11 +0000 |
| commit | c5d6bea6d9f98a593890f9694ef1575d744e5a32 (patch) | |
| tree | f5611169470b25f621cda8073d66dec672d1e46f | |
| parent | b95dc9e9c6694df5d7925b1ba806b4e4a95d7db9 (diff) | |
| download | skalibs-c5d6bea6d9f98a593890f9694ef1575d744e5a32.tar.gz | |
Prepare for 2.15.0.1; add selectshorttimeout sysdeps (yay MacOS)
| -rwxr-xr-x | configure | 6 | ||||
| -rw-r--r-- | doc/index.html | 4 | ||||
| -rw-r--r-- | doc/license.html | 2 | ||||
| -rw-r--r-- | doc/upgrade.html | 6 | ||||
| -rw-r--r-- | package/deps.mak | 2 | ||||
| -rw-r--r-- | package/info | 2 | ||||
| -rw-r--r-- | src/libstddjb/iopause_select.c | 8 | ||||
| -rw-r--r-- | src/sysdeps/tryselectshorttimeout.c | 41 |
8 files changed, 64 insertions, 7 deletions
@@ -52,9 +52,10 @@ Sysdeps autodetection override: --with-sysdep-K=V assume sysdep K has the value V [autodetected] List of mandatory sysdeps to provide by hand for cross-compiling: - devurandom (yes|no): =yes if you have a working /dev/urandom - posixspawnearlyreturn (yes|no): =yes if you have an old glibc or otherwise bad posix_spawn + devurandom (yes|no): =yes if the target has a working /dev/urandom + posixspawnearlyreturn (yes|no): =yes if the target has an old glibc or otherwise bad posix_spawn procselfexe (path|none): =path if you can get the executable name via readlink(path) + selectshorttimeout (yes|no): =yes if the target's select() fails on very long timeouts (MacOS, old OpenBSD) EOF exit 0 } @@ -733,6 +734,7 @@ choose cl pthreadmutexclocklock 'pthread_mutex_clocklock()' $pthread_lib choose clr devurandom '/dev/urandom' choose clr posixspawnearlyreturn 'posix_spawn() return early' $spawn_lib choosevalue procselfexe '/proc/self/exe' /proc/self/exe /proc/curproc/exe /proc/curproc/file /proc/self/path/a.out +choose clr selectshorttimeout 'a select() that fails on long timeouts' # Finally, produce config.mak and config.h diff --git a/doc/index.html b/doc/index.html index aded07c..613920e 100644 --- a/doc/index.html +++ b/doc/index.html @@ -61,8 +61,8 @@ with a standard C development environment </li> <h3> Download </h3> <ul> - <li> The current released version of skalibs is <a href="skalibs-2.15.0.0.tar.gz">2.15.0.0</a>. -You can access its checksum <a href="skalibs-2.15.0.0.tar.gz.sha256">here</a>. </li> + <li> The current released version of skalibs is <a href="skalibs-2.15.0.1.tar.gz">2.15.0.1</a>. +You can access its checksum <a href="skalibs-2.15.0.1.tar.gz.sha256">here</a>. </li> <li> Alternatively, you can checkout a copy of the <a href="//git.skarnet.org/cgi-bin/cgit.cgi/skalibs/">skalibs git repository</a>: diff --git a/doc/license.html b/doc/license.html index 858e998..605a169 100644 --- a/doc/license.html +++ b/doc/license.html @@ -75,7 +75,7 @@ color, or different text font. </li> <p> <em>I am aware that the previous restrictions sound completely ridiculous while the official skalibs documentation is incomplete. -As of 2.15.0.0, I'm not going to enforce those restrictions, but if you're +As of 2.15.0.1, I'm not going to enforce those restrictions, but if you're going to provide documentation for skalibs, don't keep it to yourself, please send it to me instead. :-) </em> </p> diff --git a/doc/upgrade.html b/doc/upgrade.html index 20d3cd3..86a44f0 100644 --- a/doc/upgrade.html +++ b/doc/upgrade.html @@ -17,6 +17,12 @@ <a href="//skarnet.org/">skarnet.org</a> </p> +<h2> in 2.15.0.1 </h2> + +<ul> + <li> No functional changes. </li> +</ul> + <h2> in 2.15.0.0 </h2> <ul> diff --git a/package/deps.mak b/package/deps.mak index 99a9a64..ab5fc6f 100644 --- a/package/deps.mak +++ b/package/deps.mak @@ -419,7 +419,7 @@ src/libstddjb/int64_scanlist.o src/libstddjb/int64_scanlist.lo: src/libstddjb/in src/libstddjb/iopause.o src/libstddjb/iopause.lo: src/libstddjb/iopause.c src/include/skalibs/config.h src/include/skalibs/iopause.h src/include/skalibs/sysdeps.h src/libstddjb/iopause_poll.o src/libstddjb/iopause_poll.lo: src/libstddjb/iopause_poll.c src/include/skalibs/iopause.h src/include/skalibs/tai.h src/libstddjb/iopause_ppoll.o src/libstddjb/iopause_ppoll.lo: src/libstddjb/iopause_ppoll.c src/include/skalibs/iopause.h src/include/skalibs/nonposix.h src/include/skalibs/sysdeps.h src/include/skalibs/tai.h -src/libstddjb/iopause_select.o src/libstddjb/iopause_select.lo: src/libstddjb/iopause_select.c src/include/skalibs/bsdsnowflake.h src/include/skalibs/iopause.h src/include/skalibs/tai.h +src/libstddjb/iopause_select.o src/libstddjb/iopause_select.lo: src/libstddjb/iopause_select.c src/include/skalibs/bsdsnowflake.h src/include/skalibs/iopause.h src/include/skalibs/sysdeps.h src/include/skalibs/tai.h src/libstddjb/iopause_stamp.o src/libstddjb/iopause_stamp.lo: src/libstddjb/iopause_stamp.c src/include/skalibs/iopause.h src/include/skalibs/tai.h src/libstddjb/ip46_scan.o src/libstddjb/ip46_scan.lo: src/libstddjb/ip46_scan.c src/include/skalibs/fmtscan.h src/include/skalibs/ip46.h src/libstddjb/ip46_scanlist.o src/libstddjb/ip46_scanlist.lo: src/libstddjb/ip46_scanlist.c src/include/skalibs/fmtscan.h src/include/skalibs/ip46.h diff --git a/package/info b/package/info index 01bbfcc..430eab8 100644 --- a/package/info +++ b/package/info @@ -1,4 +1,4 @@ package=skalibs -version=2.15.0.0 +version=2.15.0.1 category=prog package_macro_name=SKALIBS diff --git a/src/libstddjb/iopause_select.c b/src/libstddjb/iopause_select.c index 823f20b..863bea7 100644 --- a/src/libstddjb/iopause_select.c +++ b/src/libstddjb/iopause_select.c @@ -1,5 +1,6 @@ /* ISC license. */ +#include <skalibs/sysdeps.h> #include <skalibs/bsdsnowflake.h> #include <string.h> /* Solaris... */ @@ -29,6 +30,13 @@ int iopause_select (iopause_fd *x, unsigned int len, tain const *deadline, tain if (errno != EOVERFLOW) return -1 ; else deadline = 0 ; } +#ifdef SKALIBS_HASSELECTSHORTTIMEOUT + if (deadline && tv.tv_sec >= 100000000) + { + tv.tv_sec = 99999999 ; + tv.tv_usec = 0 ; + } +#endif } for (unsigned int i = 0 ; i < len ; i++) diff --git a/src/sysdeps/tryselectshorttimeout.c b/src/sysdeps/tryselectshorttimeout.c new file mode 100644 index 0000000..9049079 --- /dev/null +++ b/src/sysdeps/tryselectshorttimeout.c @@ -0,0 +1,41 @@ +/* ISC license. */ + +#undef _POSIX_C_SOURCE +#undef _XOPEN_SOURCE + +#ifndef _BSD_SOURCE +#define _BSD_SOURCE +#endif +#ifndef _NETBSD_SOURCE +#define _NETBSD_SOURCE +#endif +#ifndef _DARWIN_C_SOURCE +#define _DARWIN_C_SOURCE +#endif + +#include <sys/types.h> +#include <sys/time.h> +#include <sys/select.h> +#include <unistd.h> +#include <signal.h> + +static void alrm_handler (int sig) +{ + (void)sig ; + _exit(1) ; +} + +int main (void) +{ + struct sigaction action = { .sa_handler = &alrm_handler, .sa_flags = SA_NOCLDSTOP | SA_RESTART } ; + struct timeval tv = { .tv_sec = 100000000, .tv_usec = 0 } ; + fd_set r, w, x ; + FD_ZERO(&r) ; + FD_ZERO(&w) ; + FD_ZERO(&x) ; + sigfillset(&action.sa_mask) ; + if (sigaction(SIGALRM, &action, 0) == -1) _exit(111) ; + alarm(1) ; + if (select(1, &r, &w, &x, &tv) == -1) _exit(errno == EINVAL ? 0 : 111) ; + _exit(1) ; +} |
