Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | build: Move feature test macros to prelude.h | Tavian Barnes | 2024-08-28 | 46 | -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 header | Tavian Barnes | 2024-08-28 | 50 | -194/+339 |
| | |||||
* | prelude: Rely more on __has_include() | Tavian Barnes | 2024-08-28 | 7 | -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 prelude | Tavian Barnes | 2024-08-28 | 1 | -1/+3 |
| | |||||
* | prelude: Define __SANITIZE_*__ | Tavian Barnes | 2024-08-28 | 6 | -24/+21 |
| | |||||
* | diag: Get rid of bfs_static_assert() | Tavian Barnes | 2024-08-28 | 3 | -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_local | Tavian Barnes | 2024-08-28 | 2 | -11/+17 |
| | |||||
* | bftw: Handle a hypothetical platform where AT_FDCWD == -1 | Tavian Barnes | 2024-08-28 | 1 | -2/+2 |
| | |||||
* | prelude: Stub out __has_builtin() if necessary | Tavian Barnes | 2024-08-23 | 1 | -0/+4 |
| | | | | Fixes: c964524 ("atomic: Add a spin_loop() hint") | ||||
* | eval: Don't warn about suppressed errors without -noerror | Tavian Barnes | 2024-08-19 | 1 | -1/+1 |
| | |||||
* | sighook: Fix typo in comment | Tavian Barnes | 2024-08-17 | 1 | -1/+1 |
| | |||||
* | eval: Capitalize -noerror warning message | Tavian Barnes | 2024-08-17 | 1 | -1/+1 |
| | |||||
* | docs: Document the new -mount vs. -xdev behaviour | Tavian Barnes | 2024-08-16 | 1 | -2/+1 |
| | | | | Fixes: 33b85e1 ("Implement POSIX 2024's -mount") | ||||
* | New -noerror option to suppress error messages | Tavian Barnes | 2024-08-16 | 3 | -1/+29 |
| | | | | Closes: https://github.com/tavianator/bfs/issues/142 | ||||
* | eval: Remove info_hook from callback_args | Tavian Barnes | 2024-08-16 | 1 | -4/+2 |
| | |||||
* | opt: Warn about all ignored tests | Tavian Barnes | 2024-08-15 | 1 | -31/+34 |
| | | | | | This lets us warn about `bfs -delete -empty`, even though -empty is impure. | ||||
* | expr: Tell expressions what kind of expression they are | Tavian Barnes | 2024-08-15 | 5 | -200/+205 |
| | |||||
* | Default to no for "Do you want to continue?" prompts | Tavian Barnes | 2024-08-13 | 2 | -2/+2 |
| | |||||
* | opt: Add a missing NULL check in lift_andor_not() | Tavian Barnes | 2024-08-12 | 1 | -0/+4 |
| | | | | | The annotation visitor probably can't fail, but we might as well check consistently. | ||||
* | opt: Warn about ignored expressions after dangerous actions | Tavian Barnes | 2024-08-12 | 3 | -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 Barnes | 2024-08-12 | 1 | -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 NetBSD | Tavian Barnes | 2024-08-11 | 1 | -1/+2 |
| | |||||
* | bfstd: New sysoption() macro to check for POSIX option runtime support | Tavian Barnes | 2024-08-09 | 5 | -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 Barnes | 2024-08-09 | 4 | -37/+8 |
| | | | | clock_gettime() is available everywhere by now. | ||||
* | prelude: s/fallthru/_fallthrough/ for consistency with other attributes | Tavian Barnes | 2024-08-09 | 5 | -15/+15 |
| | |||||
* | bar: Hide the bar unless the TTY is tall enough | Tavian Barnes | 2024-08-07 | 1 | -13/+23 |
| | |||||
* | parse: Take umask into account in parse_mode() | Tavian Barnes | 2024-08-02 | 3 | -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 Barnes | 2024-08-02 | 1 | -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 2024 | Tavian Barnes | 2024-08-02 | 3 | -8/+8 |
| | |||||
* | Revert "typo: Raise the insert/delete cost" | Tavian Barnes | 2024-08-02 | 1 | -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 Illumos | Tavian Barnes | 2024-08-01 | 1 | -0/+1 |
| | |||||
* | bar: Use tcgetwinsize() from POSIX 2024 if available | Tavian Barnes | 2024-07-28 | 1 | -3/+10 |
| | |||||
* | prelude: Simplify attributes | Tavian Barnes | 2024-07-28 | 20 | -179/+125 |
| | |||||
* | xspawn: Fix error message if pthread_sigmask() fails | Tavian Barnes | 2024-07-27 | 1 | -2/+2 |
| | |||||
* | xspawn: Use _Fork() if available | Tavian Barnes | 2024-07-27 | 1 | -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,d | Tavian Barnes | 2024-07-17 | 1 | -5/+22 |
| | |||||
* | opt: -lname implies -type l | Tavian Barnes | 2024-07-17 | 1 | -0/+7 |
| | |||||
* | xspawn: Test the right macro for posix_spawn_..._addfchdir() support | Tavian Barnes | 2024-07-16 | 1 | -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 Barnes | 2024-07-15 | 1 | -41/+51 |
| | |||||
* | Implement POSIX 2024's -mount | Tavian Barnes | 2024-07-08 | 1 | -4/+1 |
| | | | | | | This reverts commit 4f80c17192f2b28c96a489969d4435151d68d0ce. Link: https://www.austingroupbugs.net/view.php?id=1133 | ||||
* | sighook: Replace sigtables with RCU-protected linked lists | Tavian Barnes | 2024-07-07 | 1 | -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 decision | Tavian Barnes | 2024-07-02 | 1 | -90/+84 |
| | |||||
* | ioq: Do more in the branch-free slot helper | Tavian Barnes | 2024-06-20 | 1 | -11/+11 |
| | |||||
* | build: Rename CONFIG to CONFFLAGS | Tavian Barnes | 2024-06-18 | 3 | -9/+9 |
| | |||||
* | bftw: Only resize the string once in bftw_build_path() | Tavian Barnes | 2024-06-18 | 1 | -19/+22 |
| | |||||
* | Use dstrx*() over dstrn*() when we know the exact length | Tavian Barnes | 2024-06-18 | 2 | -7/+7 |
| | |||||
* | build: Include CC in bfs --version output | Tavian Barnes | 2024-06-13 | 3 | -0/+6 |
| | |||||
* | typo: Raise the insert/delete cost | Tavian Barnes | 2024-06-08 | 1 | -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 resolution | Tavian Barnes | 2024-06-08 | 1 | -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 --version | Tavian Barnes | 2024-06-08 | 4 | -1/+45 |
| |