Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Enable Oniguruma by default | Tavian Barnes | 2022-02-21 | 4 | -7/+15 | |
| | ||||||
* | regex: Use the real Oniguruma API, not the POSIX wrapper | Tavian Barnes | 2022-02-21 | 1 | -11/+84 | |
| | | | | | | | Not every Oniguruma installation enables the POSIX wrapper, so we need our own wrapper for portability. As well, older versions of Oniguruma have symbol clashes with libc for the POSIX regex API, so using it can be unsafe. | |||||
* | regex: Wrap the POSIX API in a facade | Tavian Barnes | 2022-02-21 | 7 | -63/+152 | |
| | ||||||
* | tests: Mark -fprint/-exec flushing test bfs-specific | Tavian Barnes | 2022-02-18 | 1 | -2/+3 | |
| | | | | GNU find doesn't do it, so no reason to require it for compatibility. | |||||
* | exec: Flush I/O streams before executing anything | Tavian Barnes | 2022-02-11 | 5 | -1/+67 | |
| | | | | | | Otherwise output from commands may appear unexpectedly earlier than output from bfs. We use fflush(NULL) to flush all streams, which is more than GNU find does, but seems to be a useful extension. | |||||
* | ctx: Also check ferror(stdout) | Tavian Barnes | 2022-02-11 | 1 | -15/+27 | |
| | | | | | | Previously this was checked for all other files, but for stdout we just checked the return value of fflush(). Checking ferror() makes sure we don't miss any errors that occurred on a previous flush. | |||||
* | tests: Use skip_if for tests that need /dev/full | Tavian Barnes | 2022-02-11 | 1 | -22/+14 | |
| | ||||||
* | tests: Add a test that -exit suppresses the implicit -print | Tavian Barnes | 2022-02-10 | 2 | -0/+5 | |
| | ||||||
* | Makefile: Allow extra flags to be passed with EXTRA_*FLAGS variables | Tavian Barnes | 2022-02-09 | 1 | -4/+4 | |
| | ||||||
* | tests: Skip case insensitive tests if FNM_CASEFOLD is missing | Tavian Barnes | 2022-02-08 | 1 | -0/+5 | |
| | ||||||
* | tests: Separate skipped tests from passing tests | Tavian Barnes | 2022-02-08 | 1 | -34/+39 | |
| | ||||||
* | tests: Disable some glob tests on macOS | Tavian Barnes | 2022-02-04 | 1 | -0/+10 | |
| | | | | | macOS seems to have a non-compliant fnmatch() that doesn't treat invalid character class expressions literally. | |||||
* | regex: Add support for emacs and grep types | Tavian Barnes | 2022-02-04 | 11 | -31/+151 | |
| | ||||||
* | tests: Add tests for syntactically invalid globs | Tavian Barnes | 2022-02-02 | 13 | -0/+46 | |
| | ||||||
* | tests: New tests for -i?wholename | Tavian Barnes | 2022-02-01 | 3 | -0/+26 | |
| | ||||||
* | tests: New test for ** in a glob | Tavian Barnes | 2022-02-01 | 2 | -0/+9 | |
| | ||||||
* | tests: New test for -prune on a non-directory | Tavian Barnes | 2022-02-01 | 2 | -0/+15 | |
| | ||||||
* | tests: Try to color diff output | Tavian Barnes | 2022-02-01 | 1 | -11/+18 | |
| | ||||||
* | tests: set -P for the whole script | Tavian Barnes | 2022-02-01 | 1 | -2/+1 | |
| | | | | We rely on physical path resolution in test_execdir_pwd. | |||||
* | tests: Allow tests.sh to be invoked from any directory | Tavian Barnes | 2022-02-01 | 2 | -14/+22 | |
| | | | | | This also resolves the path passed to --bfs early, so --bfs=./bfs now works. | |||||
* | parse: Add support for ed and sed regexes | Tavian Barnes | 2022-01-30 | 4 | -1/+20 | |
| | | | | They're apparently the same as POSIX basic regexes. | |||||
* | Revert "tests: Add a test for posix-basic alternation" | Tavian Barnes | 2022-01-29 | 2 | -7/+0 | |
| | | | | | | | Turns out alternation is not actually part of the POSIX basic regular expression language, it's just a glibc extension. This reverts commit c898af13a671ee92a056467d324f16823594eb1c. | |||||
* | tests: Add a test for posix-basic alternation | Tavian Barnes | 2022-01-29 | 2 | -0/+7 | |
| | ||||||
* | Standardize WITH_* make variables for configuring dependencies | Tavian Barnes | 2022-01-29 | 7 | -32/+54 | |
| | ||||||
* | Merge pull request #81 from data-man:oniguruma_1 | Tavian Barnes | 2022-01-29 | 7 | -6/+37 | |
|\ | ||||||
| * | Apply suggestions from code review | data-man | 2022-01-24 | 2 | -12/+8 | |
| | | ||||||
| * | Simplifying | data-man | 2022-01-24 | 6 | -31/+31 | |
| | | ||||||
| * | Using Oniguruma library (optionally) | data-man | 2022-01-24 | 6 | -5/+40 | |
|/ | ||||||
* | Release 2.3.12.3.1 | Tavian Barnes | 2022-01-21 | 3 | -2/+16 | |
| | ||||||
* | bftw: Use a dynamic array for the cache | Tavian Barnes | 2022-01-18 | 1 | -45/+42 | |
| | | | | | | | Since commit 69a5227 ("eval: Raise RLIMIT_NOFILE if possible"), bfs can pass a large nopenfd (e.g. 512K) to bftw() by default. This resulted in a large up-front allocation even for small trees. Change it to grow on demand, lowering the footprint for small searches. | |||||
* | darray: New DARRAY_POP() macro | Tavian Barnes | 2022-01-18 | 2 | -2/+34 | |
| | ||||||
* | dstring: Set a minimum capacity to avoid reallocating for small strings | Tavian Barnes | 2022-01-18 | 1 | -1/+6 | |
| | ||||||
* | tests: Add missing license headers | Tavian Barnes | 2022-01-18 | 2 | -0/+32 | |
| | ||||||
* | tests/trie: Fix "handling" typo | Tavian Barnes | 2022-01-18 | 1 | -1/+1 | |
| | ||||||
* | util: New close() wrappers to check for EBADF and preserve errno | Tavian Barnes | 2022-01-18 | 9 | -53/+66 | |
| | ||||||
* | dir: Fix extra close() if fdopendir() fails | Tavian Barnes | 2022-01-18 | 1 | -2/+4 | |
| | ||||||
* | Add some missing (void)'s | Tavian Barnes | 2022-01-18 | 2 | -2/+2 | |
| | ||||||
* | ci/macos: Switch back to macos-latest | Tavian Barnes | 2021-12-19 | 2 | -24/+34 | |
| | ||||||
* | ci/macos: Downgrade to macOS 10.15 | Tavian Barnes | 2021-12-10 | 1 | -1/+2 | |
| | | | | | | | macOS 11 comes with a broken touch(1) that ignores -h. Work around it for now by downgrading macOS. Link: https://apple.stackexchange.com/a/425730/397839 | |||||
* | tests: Set TZ to a real timezone | Tavian Barnes | 2021-12-10 | 1 | -1/+1 | |
| | | | | | | | POSIX states that the offset is not optional in the TZ environment variable. Link: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html | |||||
* | stat: Work around GNU Hurd bug | Tavian Barnes | 2021-12-10 | 1 | -1/+2 | |
| | | | | | | | fstatat(fd, "", buf, AT_EMPTY_PATH) fails with a nonsense errno on Hurd. Since fstat() itself works fine, just use that. Link: https://lists.gnu.org/archive/html/bug-hurd/2021-12/msg00001.html | |||||
* | eval: Check that RLIM_SAVED_{CUR,MAX} are defined before using them | Tavian Barnes | 2021-12-05 | 1 | -3/+24 | |
| | | | | | Apparently they're missing on Debian kfreebsd: https://buildd.debian.org/status/fetch.php?pkg=bfs&arch=kfreebsd-amd64&ver=2.3-1&stamp=1638379495&raw=0 | |||||
* | ci/freebsd: Don't pin an old tailscale version2.3 | Tavian Barnes | 2021-11-25 | 1 | -1/+0 | |
| | ||||||
* | Release 2.3 | Tavian Barnes | 2021-11-25 | 4 | -3/+25 | |
| | ||||||
* | exec: Add a bit of backoff during ARG_MAX bisection | Tavian Barnes | 2021-11-23 | 1 | -7/+11 | |
| | | | | | This reduces the number of E2BIGs we see if binary search reaches the top of the possible range. | |||||
* | exec: Find ARG_MAX with binary search after E2BIG | Tavian Barnes | 2021-11-17 | 2 | -14/+67 | |
| | | | | | | | | | | | | | | | | | | | | | Previously we would shrink the command by one argument at a time until a successful execution. This is okay if the ARG_MAX estimate is just a little bit off, but is terribly slow when it's off by a lot. One situation where it's very far off is when a 32-bit build of bfs launches a 64-bit binary. In this case, bfs thinks the argv pointers are 4 bytes, while they actually take up 8 bytes. The performance is quite bad: $ time ./bfs-64 ~/code/linux -exec echo {} + >/dev/null ./bfs-64 ~/code/linux -exec echo {} + > /dev/null 0.03s user 0.07s system 99% cpu 0.095 total $ time ./bfs-32 ~/code/linux -exec echo {} + >/dev/null ./bfs-32 ~/code/linux -exec echo {} + > /dev/null 0.08s user 10.33s system 100% cpu 10.390 total After this change, performance is much better: $ time ./bfs-32 ~/code/linux -exec echo {} + >/dev/null ./bfs-32 ~/code/linux -exec echo {} + > /dev/null 0.03s user 0.08s system 99% cpu 0.110 total | |||||
* | parse: Switch back to O_TRUNC from explicit ftruncate() | Tavian Barnes | 2021-10-19 | 2 | -31/+16 | |
| | | | | | | | | O_TRUNC is not equivalent to an unconditional ftruncate(), e.g. for device files. This reverts the behaviour change from 78944c81, which was never released and is not supported in other find implementations. | |||||
* | tests: Distinguish between failures and crashes | Tavian Barnes | 2021-10-19 | 1 | -47/+61 | |
| | ||||||
* | tests: Set abort_on_error=1 for the sanitizers | Tavian Barnes | 2021-10-19 | 1 | -0/+6 | |
| | | | | This makes it easier to distinguish crashes from expected failures | |||||
* | parse: Fix UAF + double-free when ftruncate() fails | Tavian Barnes | 2021-10-19 | 1 | -5/+8 | |
| |