summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* build: Move feature test macros to prelude.hTavian Barnes2024-08-2846-69/+57
| | | | | | This replaces the explicit CPPFLAGS list in flags.mk with just `-include src/prelude.h`, shortening our compiler command lines and allowing them to be easily documented.
* prelude: Split bfs-specific utilities into new bfs.h headerTavian Barnes2024-08-2850-194/+339
|
* prelude: Rely more on __has_include()Tavian Barnes2024-08-287-96/+31
| | | | | Rather than a bunch of manual fallback macros, just provide a fallback definition that returns false.
* build: Move tsan/target_clones conflict to the preludeTavian Barnes2024-08-281-1/+3
|
* prelude: Define __SANITIZE_*__Tavian Barnes2024-08-286-24/+21
|
* diag: Get rid of bfs_static_assert()Tavian Barnes2024-08-283-13/+2
| | | | | In most cases, it's not too annoying to specify a message. For tests/bit.c, we can manually polyfill the 1-argument version.
* prelude: Define thread_localTavian Barnes2024-08-282-11/+17
|
* bftw: Handle a hypothetical platform where AT_FDCWD == -1Tavian Barnes2024-08-281-2/+2
|
* prelude: Stub out __has_builtin() if necessaryTavian Barnes2024-08-231-0/+4
| | | | Fixes: c964524 ("atomic: Add a spin_loop() hint")
* eval: Don't warn about suppressed errors without -noerrorTavian Barnes2024-08-191-1/+1
|
* sighook: Fix typo in commentTavian Barnes2024-08-171-1/+1
|
* eval: Capitalize -noerror warning messageTavian Barnes2024-08-171-1/+1
|
* docs: Document the new -mount vs. -xdev behaviourTavian Barnes2024-08-161-2/+1
| | | | Fixes: 33b85e1 ("Implement POSIX 2024's -mount")
* New -noerror option to suppress error messagesTavian Barnes2024-08-163-1/+29
| | | | Closes: https://github.com/tavianator/bfs/issues/142
* eval: Remove info_hook from callback_argsTavian Barnes2024-08-161-4/+2
|
* opt: Warn about all ignored testsTavian Barnes2024-08-151-31/+34
| | | | | This lets us warn about `bfs -delete -empty`, even though -empty is impure.
* expr: Tell expressions what kind of expression they areTavian Barnes2024-08-155-200/+205
|
* Default to no for "Do you want to continue?" promptsTavian Barnes2024-08-132-2/+2
|
* opt: Add a missing NULL check in lift_andor_not()Tavian Barnes2024-08-121-0/+4
| | | | | The annotation visitor probably can't fail, but we might as well check consistently.
* opt: Warn about ignored expressions after dangerous actionsTavian Barnes2024-08-123-25/+79
| | | | | | For example, `bfs -delete -type f` is almost certainly a mistake. Link: https://savannah.gnu.org/bugs/?65895
* opt: Copy data flow back up from the nested context in optimize()Tavian Barnes2024-08-121-2/+11
| | | | | | | | This fixes warnings on commands like `bfs -exclude -true` or `bfs -exclude -type f -type f`, because the data flow is properly shared between the -exclude expression and the main one. Fixes: 4a36bb9 ("expr: Make expressions variadic")
* sighook: Disable semaphores on NetBSDTavian Barnes2024-08-111-1/+2
|
* bfstd: New sysoption() macro to check for POSIX option runtime supportTavian Barnes2024-08-095-39/+84
| | | | | | | | | | POSIX allows optional features to be supported at compile time but not necessarily at run time by defining _POSIX_OPTION to 0 and requiring users to check sysconf(_SC_OPTION) > 0. The new sysoption() macro simplifies the check. sighook() and bfs_spawn() now check for conditional runtime support for the relevant POSIX options.
* xtime: Remove xgettime()Tavian Barnes2024-08-094-37/+8
| | | | clock_gettime() is available everywhere by now.
* prelude: s/fallthru/_fallthrough/ for consistency with other attributesTavian Barnes2024-08-095-15/+15
|
* bar: Hide the bar unless the TTY is tall enoughTavian Barnes2024-08-071-13/+23
|
* parse: Take umask into account in parse_mode()Tavian Barnes2024-08-023-8/+22
| | | | | | | POSIX 2024 clarified that find(1) is meant to work exactly like chmod(1) here, so for modes like +rw,-x with no "who" specified, apply the umask. Link: https://www.austingroupbugs.net/view.php?id=1392
* parse: Fix names in parse_mode()Tavian Barnes2024-08-021-14/+14
| | | | | | | Commit 9c6e4ce ("parse: s/parser_state/bfs_parser/") was a little to overzealous in replacing "state" with "parser", resulting in the tortured phrase "parser machine parser" instead of "state machine state".
* Update opengroup.org links to POSIX 2024Tavian Barnes2024-08-023-8/+8
|
* Revert "typo: Raise the insert/delete cost"Tavian Barnes2024-08-021-1/+1
| | | | | | | That was a little too aggressive, with -alse suggesting -size instead of -false. This reverts commit 0d6822ee71c1f60c8003e13ab149501e586f9ae6.
* bar: #include <unistd.h> for ioctl() on IllumosTavian Barnes2024-08-011-0/+1
|
* bar: Use tcgetwinsize() from POSIX 2024 if availableTavian Barnes2024-07-281-3/+10
|
* prelude: Simplify attributesTavian Barnes2024-07-2820-179/+125
|
* xspawn: Fix error message if pthread_sigmask() failsTavian Barnes2024-07-271-2/+2
|
* xspawn: Use _Fork() if availableTavian Barnes2024-07-271-0/+4
| | | | | | | This completes the workaround for bfs_spawn() hanging on FreeBSD with ASan enabled. Link: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=280318
* opt: -empty implies -type f,dTavian Barnes2024-07-171-5/+22
|
* opt: -lname implies -type lTavian Barnes2024-07-171-0/+7
|
* xspawn: Test the right macro for posix_spawn_..._addfchdir() supportTavian Barnes2024-07-161-1/+1
| | | | | | | | | | This should have been benign (just a performance regression), but FreeBSD has a bug that causes the fork()-based fallback to lock up when ASAN is enabled, due to fork() and dl_iterate_phdr(). This is not a complete workaround for that issue, since the fork() fallback may be used for other reasons. Fixes: 29ddac2 ("config: Check for posix_spawn_file_actions_addfchdir{,_np}()")
* sighook: Make sigunhook() O(1)Tavian Barnes2024-07-151-41/+51
|
* Implement POSIX 2024's -mountTavian Barnes2024-07-081-4/+1
| | | | | | This reverts commit 4f80c17192f2b28c96a489969d4435151d68d0ce. Link: https://www.austingroupbugs.net/view.php?id=1133
* sighook: Replace sigtables with RCU-protected linked listsTavian Barnes2024-07-071-148/+68
| | | | | | | | This fixes an ABA problem where sigdispatch() could think no handlers are registered for a signal even when there are. Link: https://unix.stackexchange.com/a/779594/56202 Fixes: 375caac ("sighook: New utilities for hooking signals")
* color: Delay the case_sensitive decisionTavian Barnes2024-07-021-90/+84
|
* ioq: Do more in the branch-free slot helperTavian Barnes2024-06-201-11/+11
|
* build: Rename CONFIG to CONFFLAGSTavian Barnes2024-06-183-9/+9
|
* bftw: Only resize the string once in bftw_build_path()Tavian Barnes2024-06-181-19/+22
|
* Use dstrx*() over dstrn*() when we know the exact lengthTavian Barnes2024-06-182-7/+7
|
* build: Include CC in bfs --version outputTavian Barnes2024-06-133-0/+6
|
* typo: Raise the insert/delete costTavian Barnes2024-06-081-1/+1
| | | | | It should be at least half the max char distance so that we mostly get replacements, not inserts + deletes.
* xspawn: Check X_OK even without $PATH resolutionTavian Barnes2024-06-081-2/+11
| | | | | | | | | | Not all posix_spawn() implementations use errno to report execv() failures from the child process, as that requires either a kernel posix_spawn() implementation or a pipe to pass the error back. This should fix tests/posix/exec_nonexistent on OpenBSD and HPPA. Link: https://buildd.debian.org/status/fetch.php?pkg=bfs&arch=hppa&ver=3.3.1-1&stamp=1717489148&raw=0
* Embed more configuration info in bfs --versionTavian Barnes2024-06-084-1/+45
|