Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | xspawn: Don't use posix_spawnp() on macOS | Tavian Barnes | 2024-03-27 | 1 | -1/+33 |
| | | | | | | | | On macOS, posix_spawnp() resolves the executable against the $PATH *before* the file_actions are applied, contrary to the upcoming POSIX wording [1] for posix_spawn_file_actions_addfchdir(). [1]: https://www.austingroupbugs.net/view.php?id=1208#c4830 | ||||
* | xspawn: Refactor $PATH resolution | Tavian Barnes | 2024-03-27 | 1 | -81/+240 |
| | | | | | | | | | Technically, we should be resolving executables *after* applying the file actions. It's only safe to resolve earlier if $PATH contains no relative entries, or if there are no fchdir() actions. The new implementation resolves as early as possible, deferring to posix_spawnp() if necessary for correctness. | ||||
* | xspawn: Implement bfs_spawn_addopen() | Tavian Barnes | 2024-03-27 | 2 | -3/+67 |
| | |||||
* | bfstd: Escape ASCII tildes | Tavian Barnes | 2024-03-26 | 1 | -1/+1 |
| | | | | | | | | The POSIX spec [1] lists some characters that may need to be escaped. Unfortunately, the document uses ˜ (U+02DC SMALL TILDE) instead of ~ (U+007E TILDE), and I copy-pasted from it. [1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_02 | ||||
* | xtime: Don't update tm if xtimegm() overflows | Tavian Barnes | 2024-03-26 | 1 | -29/+33 |
| | |||||
* | trie: Calculate representative indices branchlessly | Tavian Barnes | 2024-03-23 | 1 | -3/+4 |
| | |||||
* | bftw: Use a signed integer for dir_limit | Tavian Barnes | 2024-03-22 | 1 | -25/+8 |
| | |||||
* | Fix some -Wpedantic warnings | Tavian Barnes | 2024-03-22 | 2 | -10/+8 |
| | |||||
* | bfstd: Add an ASCII fast path to xstrwidth() | Tavian Barnes | 2024-03-21 | 1 | -1/+10 |
| | |||||
* | bfstd: New asciilen() function | Tavian Barnes | 2024-03-21 | 2 | -25/+58 |
| | |||||
* | bit: Check __BYTE_ORDER__ for the native endian | Tavian Barnes | 2024-03-21 | 1 | -2/+2 |
| | | | | __ORDER_NATIVE_ENDIAN__ is not a thing. | ||||
* | bfstd: Check that wcwidth() is positive | Tavian Barnes | 2024-03-20 | 1 | -2/+6 |
| | | | | | wcwidth() returns -1 for non-printable characters, but terminals typically don't print anything for them, so treat them as 0. | ||||
* | ioq: Fix some allocation failure paths | Tavian Barnes | 2024-03-20 | 1 | -2/+4 |
| | |||||
* | Implement -limit N | Tavian Barnes | 2024-03-20 | 4 | -1/+52 |
| | | | | Closes: https://github.com/tavianator/bfs/issues/133 | ||||
* | config: Don't mix [[attr]] and __attribute__((attr)) | Tavian Barnes | 2024-03-19 | 1 | -6/+2 |
| | | | | | GCC and Clang don't support combining the two attribute syntaxes in arbitrary order. For now, just use the GNU style. | ||||
* | Re-run include-what-you-use | Tavian Barnes | 2024-03-11 | 21 | -23/+26 |
| | |||||
* | tests/xtime: Add tests for integer overflow | Tavian Barnes | 2024-03-10 | 1 | -1/+3 |
| | |||||
* | xtime: Call tzset() from main() instead of lazily | Tavian Barnes | 2024-03-07 | 6 | -66/+14 |
| | | | | | | | | | | | | | POSIX specifies[1] that If a thread accesses tzname, daylight, or timezone directly while another thread is in a call to tzset(), or to any function that is required or allowed to set timezone information as if by calling tzset(), the behavior is undefined. So calling it lazily from arbitrary threads is risky. [1]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tzset.html | ||||
* | Release 3.1.33.1.3 | Tavian Barnes | 2024-03-06 | 1 | -1/+1 |
| | |||||
* | ioq: Copy ring_ops from the previous thread | Tavian Barnes | 2024-03-06 | 1 | -1/+4 |
| | | | | | | Otherwise threads 2-N won't use io_uring at all! Oops. Fixes: 8bc72d6c ("ioq: Probe for supported io_uring operations") | ||||
* | eval: Tweak status bar punctuation | Tavian Barnes | 2024-03-06 | 1 | -1/+1 |
| | |||||
* | Release 3.1.23.1.2 | Tavian Barnes | 2024-02-29 | 1 | -1/+1 |
| | |||||
* | diag: New bfs_diag() macro | Tavian Barnes | 2024-02-29 | 2 | -3/+27 |
| | |||||
* | xtime: Fix some xgetdate() bugs | Tavian Barnes | 2024-02-28 | 1 | -9/+24 |
| | | | | And add some more test cases. | ||||
* | stat: Use errno_is_like(ENOSYS) for EPERM kludge | Tavian Barnes | 2024-02-28 | 2 | -3/+5 |
| | |||||
* | ioq: Probe for supported io_uring operations | Tavian Barnes | 2024-02-28 | 1 | -18/+67 |
| | |||||
* | ioq: Remove some branches from ioq_slot_{push,pop}() | Tavian Barnes | 2024-02-18 | 1 | -12/+21 |
| | |||||
* | ioq: Ensure ioq_ent is sufficiently aligned | Tavian Barnes | 2024-02-16 | 2 | -2/+9 |
| | | | | | | | The natural alignment of struct ioq_ent is only 2 on m68k, so over-align it to at least 4 bytes on all platforms. Link: https://buildd.debian.org/status/fetch.php?pkg=bfs&arch=m68k&ver=3.1-1&stamp=1707699583 | ||||
* | Release 3.1.13.1.1 | Tavian Barnes | 2024-02-16 | 1 | -1/+1 |
| | |||||
* | ioq: Add batched ioqq_push/pop operations | Tavian Barnes | 2024-02-15 | 1 | -49/+127 |
| | |||||
* | ioq: Don't push immediately in ioq_check_cancel() | Tavian Barnes | 2024-02-15 | 1 | -10/+6 |
| | |||||
* | ioq: Add a missing close() if bfs_opendir() fails | Tavian Barnes | 2024-02-15 | 1 | -0/+2 |
| | |||||
* | ioq: Don't use the symbolic IO_WQ_[UN]BOUND indices | Tavian Barnes | 2024-02-14 | 1 | -2/+2 |
| | | | | They are only available since liburing 2.2, which is newer than CI. | ||||
* | ioq: Factor out io_uring initialization | Tavian Barnes | 2024-02-14 | 1 | -37/+73 |
| | |||||
* | ioq: Make -j also limit the io_uring worker threads | Tavian Barnes | 2024-02-14 | 1 | -0/+9 |
| | |||||
* | ioq: Replay IOQ_STOP messages rather than spam them | Tavian Barnes | 2024-02-14 | 1 | -4/+5 |
| | |||||
* | ioq: Pack ioq_ent args structs | Tavian Barnes | 2024-02-14 | 1 | -3/+3 |
| | |||||
* | bftw: Document which bftw_file nodes go with which lists | Tavian Barnes | 2024-02-14 | 1 | -3/+17 |
| | |||||
* | expr: Pack struct bfs_expr a bit | Tavian Barnes | 2024-02-14 | 1 | -15/+9 |
| | |||||
* | stat: Pack struct bfs_stat a bit | Tavian Barnes | 2024-02-14 | 2 | -28/+24 |
| | |||||
* | eval: Add thousands separators to -status | Tavian Barnes | 2024-02-12 | 1 | -2/+2 |
| | |||||
* | sanity: Don't use self-init for uninit() | Tavian Barnes | 2024-02-12 | 3 | -7/+7 |
| | | | | | | | | | | | Self-initialization like bool ret = ret; is a GCC trick to suppress uninitialized variable warnings, but it's not actually well-defined, and will trip a recent enough MemorySanitizer: src/eval.c:1088:13: runtime error: load of value 128, which is not a valid value for type 'bool' | ||||
* | ioq: Get rid of IOQ_STRIDE | Tavian Barnes | 2024-02-12 | 1 | -20/+5 |
| | | | | Benchmarks show it hurts more than it helps. | ||||
* | ioq: Shrink the io_urings | Tavian Barnes | 2024-02-12 | 1 | -4/+2 |
| | |||||
* | Release 3.13.1 | Tavian Barnes | 2024-02-06 | 1 | -1/+1 |
| | |||||
* | opt: Enable BFTW_STAT when profitable | Tavian Barnes | 2024-02-06 | 2 | -0/+93 |
| | |||||
* | ctx: Fill in ctx->threads earlier | Tavian Barnes | 2024-02-06 | 3 | -23/+20 |
| | |||||
* | color: New API to check if stat() is necessary | Tavian Barnes | 2024-02-06 | 2 | -6/+11 |
| | |||||
* | bftw: stat() files asynchronously | Tavian Barnes | 2024-02-06 | 3 | -211/+506 |
| | |||||
* | mtab: Take the basename directly in bfs_might_be_mount() | Tavian Barnes | 2024-02-05 | 3 | -6/+5 |
| | | | | This avoids some hot xbaseoff() calls. |