Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Include what I use | Tavian Barnes | 2020-11-12 | 1 | -1/+0 |
| | | | | Thanks to https://github.com/include-what-you-use/include-what-you-use | ||||
* | spawn: Fix error pipe write failure handling | Tavian Barnes | 2020-11-04 | 1 | -1/+8 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* | spawn: Actually fix moving the pipe out of the way | Tavian Barnes | 2019-07-08 | 1 | -7/+7 |
| | | | | | We have to check in_fd after out_fd, otherwise the dup() may move it to in_fd. | ||||
* | spawn: Fix moving the pipe out of the way | Tavian Barnes | 2019-07-05 | 1 | -3/+9 |
| | | | | | The old code could dup() the pipe from in_fd to out_fd, for example, and neglected to keep it CLOEXEC. | ||||
* | spawn: Move the pipe FD out of the way of input FDs too | Tavian Barnes | 2019-06-16 | 1 | -1/+1 |
| | |||||
* | spawn: Add dup2() and close() file actions | Tavian Barnes | 2019-05-31 | 1 | -5/+60 |
| | |||||
* | spawn: Add some docs | Tavian Barnes | 2018-09-19 | 1 | -8/+11 |
| | |||||
* | spawn: Implement execvpe() on platforms that lack it | Tavian Barnes | 2018-09-19 | 1 | -1/+11 |
| | | | | | | 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. | ||||
* | spawn: New posix_spawn()-like API for exec | Tavian Barnes | 2018-09-18 | 1 | -0/+158 |