Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | mtab: Fix getmntinfo() error check | Tavian Barnes | 2024-05-07 | 1 | -1/+1 |
| | | | | The man pages all say "if an error occurs, zero is returned" | ||||
* | build: Add checks for strtofflags() and string_to_flags() | Tavian Barnes | 2024-05-07 | 1 | -7/+9 |
| | |||||
* | prelude: Remove unused __GLIBC_PREREQ() polyfill | Tavian Barnes | 2024-05-07 | 1 | -4/+0 |
| | |||||
* | stat: Remove __GNU__ guard | Tavian Barnes | 2024-05-07 | 1 | -1/+1 |
| | | | | | The number of people running bfs on Hurd with an outdated glibc version is vanishingly small (I hope). | ||||
* | stat: Prefer fstat(fd) to fstatat(fd, "", AT_EMPTY_PATH) | Tavian Barnes | 2024-05-07 | 1 | -19/+13 |
| | | | | | | | | | This lets us get rid of the runtime probe for AT_EMPTY_PATH support, and should be more efficient anyway. We still use statx(fd, "", AT_EMPTY_PATH) if available. Link: https://lore.kernel.org/linux-fsdevel/CAHk-=wiYnnv7Kw7v+Cp2xU6_Fd-qxQMZuuxZ61LgA2=Gtftw-A@mail.gmail.com/ | ||||
* | prelude: Kill unused __NetBSD_Prereq__() polyfill | Tavian Barnes | 2024-05-07 | 1 | -4/+0 |
| | |||||
* | xtime: Don't use timegm() on FreeBSD+msan | Tavian Barnes | 2024-05-06 | 1 | -1/+3 |
| | |||||
* | xtime: Use the libc's timegm() if present | Tavian Barnes | 2024-05-06 | 1 | -3/+33 |
| | |||||
* | config: Add BFS_USE_LIB* to config.h instead of CPPFLAGS | Tavian Barnes | 2024-04-25 | 1 | -0/+1 |
| | |||||
* | ioq: Fix uninitialized values in ioq_create() cleanup path | Tavian Barnes | 2024-04-24 | 1 | -4/+1 |
| | | | | | | | | I switched from ZALLOC_FLEX() to ALLOC_FLEX() in hopes that msan would catch uninitialized values in ioq_thread_create(), but in doing so, forgot to initialize all fields before the first goto fail. Fixes: f64f76b ("ioq: Copy ring_ops from the previous thread") | ||||
* | printf: Check dynamic format strings more carefully | Tavian Barnes | 2024-04-24 | 2 | -41/+48 |
| | |||||
* | printf: Refactor %y/%Y implementation | Tavian Barnes | 2024-04-24 | 3 | -59/+53 |
| | |||||
* | ctx: Escape paths when reporting errors in bfs_ctx_free() | Tavian Barnes | 2024-04-24 | 1 | -1/+1 |
| | |||||
* | opt: Add missing NULL check in visit_shallow() | Tavian Barnes | 2024-04-24 | 1 | -1/+5 |
| | | | | | visit_shallow() should propagate NULL, but look_up_visitor() dereferences expr to know which visitor to return. | ||||
* | dstring: Add missing va_end() to dstrvcatf() error path | Tavian Barnes | 2024-04-24 | 1 | -0/+1 |
| | |||||
* | eval: Plug memory leak if bfs_opendir() fails | Tavian Barnes | 2024-04-24 | 1 | -18/+22 |
| | |||||
* | fsade: Implement ACL detection on Illumos | Tavian Barnes | 2024-04-22 | 2 | -12/+21 |
| | |||||
* | config: Check for acl_get_file() | Tavian Barnes | 2024-04-22 | 2 | -8/+1 |
| | |||||
* | fsade: Simplify BFS_CAN_CHECK_CAPABILITIES | Tavian Barnes | 2024-04-22 | 2 | -13/+1 |
| | |||||
* | config: Check for acl_get_{entry,tag_type}() | Tavian Barnes | 2024-04-22 | 1 | -12/+20 |
| | |||||
* | 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 |
| |