Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | 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 |
| | |||||
* | printf: Colorize file names/paths in simple cases | Tavian Barnes | 2021-10-09 | 3 | -8/+76 |
| | |||||
* | color: New %pF format for file names | Tavian Barnes | 2021-10-09 | 2 | -5/+36 |
| | |||||
* | printf: Take a CFILE, not a FILE | Tavian Barnes | 2021-10-09 | 3 | -65/+66 |
| | |||||
* | ci/codecov: Disable status checks | Tavian Barnes | 2021-10-02 | 1 | -0/+4 |
| | |||||
* | tests: Add a test for an operator in an unexpected position | Tavian Barnes | 2021-10-01 | 1 | -0/+5 |
| | |||||
* | tests: Add tests for parsing invalid integers | Tavian Barnes | 2021-10-01 | 2 | -4/+41 |
| | | | | And give some better error messages. | ||||
* | tests: Add a tests for missing and nonexistent paths | Tavian Barnes | 2021-10-01 | 1 | -0/+20 |
| | |||||
* | ci: Add a codecov.io workflow | Tavian Barnes | 2021-09-28 | 1 | -0/+31 |
| | |||||
* | Don't truncate files until we know they're not duplicates | Tavian Barnes | 2021-09-26 | 8 | -68/+115 |
| | |||||
* | util: New xfopen() utility | Tavian Barnes | 2021-09-21 | 5 | -3/+58 |
| | | | | | And use it to pass O_CLOEXEC to all FILE*'s, so the files opened for -fprint etc. don't get passed to the programs run by -exec etc. |