Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | config: Check for extattr_{get,list}_{file,link}() | Tavian Barnes | 2024-04-22 | 2 | -11/+53 | |
| | | | | This lets us implement -xattr on DragonFly BSD. | |||||
* | config: Check for max_align_t | Tavian Barnes | 2024-04-19 | 1 | -4/+15 | |
| | ||||||
* | config: Check for aligned_alloc() | Tavian Barnes | 2024-04-19 | 1 | -3/+3 | |
| | ||||||
* | config: Check for struct stat::st_flags | Tavian Barnes | 2024-04-19 | 1 | -1/+1 | |
| | ||||||
* | config: Check for struct stat::st_{a,c,m,birth}{tim,timespec} | Tavian Barnes | 2024-04-19 | 2 | -9/+22 | |
| | ||||||
* | config: Check for struct tm::tm_gmtoff | Tavian Barnes | 2024-04-19 | 1 | -1/+1 | |
| | ||||||
* | config: Check for fdclosedir() | Tavian Barnes | 2024-04-19 | 2 | -2/+2 | |
| | ||||||
* | config: Check for strerror_[lr]() | Tavian Barnes | 2024-04-19 | 1 | -22/+20 | |
| | ||||||
* | config: Check for pipe2() | Tavian Barnes | 2024-04-19 | 1 | -1/+1 | |
| | ||||||
* | config: Check for statx() | Tavian Barnes | 2024-04-19 | 2 | -8/+4 | |
| | ||||||
* | config: Check for acl_is_trivial_np() | Tavian Barnes | 2024-04-19 | 1 | -2/+2 | |
| | ||||||
* | config: Check for confstr() | Tavian Barnes | 2024-04-19 | 1 | -5/+5 | |
| | ||||||
* | config: Check for getdents{,64}() | Tavian Barnes | 2024-04-19 | 2 | -8/+10 | |
| | ||||||
* | config: Check for posix_spawn_file_actions_addfchdir{,_np}() | Tavian Barnes | 2024-04-19 | 1 | -20/+6 | |
| | ||||||
* | config: Check for program_invocation_short_name | Tavian Barnes | 2024-04-19 | 2 | -3/+5 | |
| | | | | | | This lets us pick it up on musl too, since there's no __MUSL__ macro. Link: https://wiki.musl-libc.org/faq#Q:-Why-is-there-no-%3Ccode%3E__MUSL__%3C/code%3E-macro? | |||||
* | Rename config.h to prelude.h | Tavian Barnes | 2024-04-19 | 41 | -44/+44 | |
| | ||||||
* | build: Directly generate version.c | Tavian Barnes | 2024-04-17 | 2 | -7/+0 | |
| | ||||||
* | mtab: Arena-allocate struct bfs_mount | Tavian Barnes | 2024-04-17 | 1 | -15/+28 | |
| | ||||||
* | printf: Implement %Z | Tavian Barnes | 2024-04-10 | 1 | -0/+23 | |
| | ||||||
* | Implement -context | Tavian Barnes | 2024-04-10 | 3 | -62/+96 | |
| | | | | Closes: https://github.com/tavianator/bfs/issues/27 | |||||
* | fsade: Add libselinux wrappers | Tavian Barnes | 2024-04-10 | 2 | -0/+50 | |
| | ||||||
* | build: Add a separate configuration step | Tavian Barnes | 2024-04-09 | 4 | -6/+14 | |
| | ||||||
* | xspawn: Fix $PATH resolution on NetBSD 10 | Tavian Barnes | 2024-04-09 | 1 | -2/+2 | |
| | ||||||
* | config: Allow inlining allocator functions | Tavian Barnes | 2024-03-28 | 1 | -1/+1 | |
| | | | | | GCC disables inlining on custom allocator/deallocator pairs, so that they can be matched up accurately in stack traces. | |||||
* | xspawn: Fix bfs_resolve_late() error reporting | Tavian Barnes | 2024-03-27 | 1 | -8/+2 | |
| | ||||||
* | 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 | |
| |