diff options
author | Rich Felker <dalias@aerifal.cx> | 2017-04-22 20:45:16 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2017-04-22 20:47:25 -0400 |
commit | f9f686b7721e2cc35e20fa5c6df6da2dc4ac3f50 (patch) | |
tree | 1084cf7d92ae83f2957ed6135e8687d8513d8b11 | |
parent | 77e895dcfadb156c9f378d26c9d0497ce2baf13f (diff) | |
download | musl-f9f686b7721e2cc35e20fa5c6df6da2dc4ac3f50.tar.gz musl-f9f686b7721e2cc35e20fa5c6df6da2dc4ac3f50.tar.xz musl-f9f686b7721e2cc35e20fa5c6df6da2dc4ac3f50.zip |
have posix_spawnattr_setflags check for supported flags
per POSIX, EINVAL is not a mandatory error, only an optional one. but reporting unsupported flags allows an application to fallback gracefully when a requested feature is not supported. this is not helpful now, but it may be in the future if additional flags are added. had this checking been present before, applications would have been able to check for the newly-added POSIX_SPAWN_SETSID feature (added in commit bb439bb17108b67f3df9c9af824d3a607b5b059d) at runtime.
-rw-r--r-- | src/process/posix_spawnattr_setflags.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/process/posix_spawnattr_setflags.c b/src/process/posix_spawnattr_setflags.c index f750c040..68780992 100644 --- a/src/process/posix_spawnattr_setflags.c +++ b/src/process/posix_spawnattr_setflags.c @@ -1,7 +1,18 @@ #include <spawn.h> +#include <errno.h> int posix_spawnattr_setflags(posix_spawnattr_t *attr, short flags) { + const unsigned all_flags = + POSIX_SPAWN_RESETIDS | + POSIX_SPAWN_SETPGROUP | + POSIX_SPAWN_SETSIGDEF | + POSIX_SPAWN_SETSIGMASK | + POSIX_SPAWN_SETSCHEDPARAM | + POSIX_SPAWN_SETSCHEDULER | + POSIX_SPAWN_USEVFORK | + POSIX_SPAWN_SETSID; + if (flags & ~all_flags) return EINVAL; attr->__flags = flags; return 0; } |