summaryrefslogtreecommitdiffstats
path: root/spawn.c
AgeCommit message (Collapse)Author
2021-05-20spawn: New bfs_spawn_addsetrlimit() actionTavian Barnes
2021-04-15util: Tweak the safe read/write functionsTavian Barnes
2021-04-15util: add safe_read_all() and safe_write_all() functions.Markus F.X.J. Oberhumer
2021-04-15util: introduce safe versions of read & write that handle interruptedMarkus F.X.J. Oberhumer
systems calls.
2021-02-05Fix up some #includesTavian Barnes
2020-11-12Include what I useTavian Barnes
Thanks to https://github.com/include-what-you-use/include-what-you-use
2020-11-04spawn: Fix error pipe write failure handlingTavian Barnes
A short history lesson: this code (from exec.c) used to just be write(...); In 649d85b, an empty if block was added to placate _FORTIFY_SOURCE's warn_unused_result: if (write(...) != sizeof(error)) { // ... } This is fine since the parent doesn't rely on receiving those writes (e.g. the child could die before writing), and the small write to a pipe won't fail anyway. But when bfs_spawn() was created, the implementation changed to this: while (write(...) < sizeof(error)); The while loop was presumably added to mirror musl's posix_spawn() implementation, which handles EINTR. But musl's is actually correct: while (write(...) < 0); whereas mine has a subtle bug: since sizeof(error) is unsigned, the bfs code did an unsigned comparison, meaning -1 from write() would *not* restart the loop. Fix it by comparing with 0 like musl, since short writes are impossible here. Perhaps it's time for -Wsign-compare, despite the other 18 instances being false positives.
2019-07-08spawn: Actually fix moving the pipe out of the wayTavian Barnes
We have to check in_fd after out_fd, otherwise the dup() may move it to in_fd.
2019-07-05spawn: Fix moving the pipe out of the wayTavian Barnes
The old code could dup() the pipe from in_fd to out_fd, for example, and neglected to keep it CLOEXEC.
2019-06-16spawn: Move the pipe FD out of the way of input FDs tooTavian Barnes
2019-05-31spawn: Add dup2() and close() file actionsTavian Barnes
2018-09-19spawn: Add some docsTavian Barnes
2018-09-19spawn: Implement execvpe() on platforms that lack itTavian Barnes
Credit to https://github.com/nim-lang/Nim/issues/3138 for the idea to just overwrite environ and call execvp() instead of duplicating the path searching logic.
2018-09-18spawn: New posix_spawn()-like API for execTavian Barnes