diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2024-08-09 23:26:25 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2024-08-09 23:28:55 -0400 |
commit | 1507cc211f6ce5b4f20f83470eacf44755a0cdcc (patch) | |
tree | 79f204eeb7ebdceeee027297d48d1d59802d3f66 /src/bfstd.h | |
parent | baf9ee660c9f1d44d64341e225f9e0d7b808424d (diff) | |
download | bfs-1507cc211f6ce5b4f20f83470eacf44755a0cdcc.tar.xz |
bfstd: New sysoption() macro to check for POSIX option runtime support
POSIX allows optional features to be supported at compile time but not
necessarily at run time by defining _POSIX_OPTION to 0 and requiring
users to check sysconf(_SC_OPTION) > 0. The new sysoption() macro
simplifies the check.
sighook() and bfs_spawn() now check for conditional runtime support for
the relevant POSIX options.
Diffstat (limited to 'src/bfstd.h')
-rw-r--r-- | src/bfstd.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/bfstd.h b/src/bfstd.h index afb5282..968c0ac 100644 --- a/src/bfstd.h +++ b/src/bfstd.h @@ -447,6 +447,19 @@ int xstrtofflags(const char **str, unsigned long long *set, unsigned long long * */ long xsysconf(int name); +/** + * Check for a POSIX option[1] at runtime. + * + * [1]: https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap02.html#tag_02_01_06 + * + * @param name + * The symbolic name of the POSIX option (e.g. SPAWN). + * @return + * The value of the option, either -1 or a date like 202405. + */ +#define sysoption(name) \ + (_POSIX_##name == 0 ? xsysconf(_SC_##name) : _POSIX_##name) + #include <wchar.h> /** |