Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | bench: Add a stat() benchmark | Tavian Barnes | 2024-02-12 | 1 | -4/+53 |
| | |||||
* | Merge pull request #130 from thesamesam/gentoo | Tavian Barnes | 2024-02-07 | 1 | -0/+3 |
|\ | | | | | README.md: bfs is now in Gentoo as sys-apps/bfs | ||||
| * | README.md: bfs is now in Gentoo as sys-apps/bfs | Sam James | 2024-02-07 | 1 | -0/+3 |
|/ | |||||
* | Release 3.13.1 | Tavian Barnes | 2024-02-06 | 3 | -2/+46 |
| | |||||
* | opt: Enable BFTW_STAT when profitable | Tavian Barnes | 2024-02-06 | 2 | -0/+93 |
| | |||||
* | ctx: Fill in ctx->threads earlier | Tavian Barnes | 2024-02-06 | 3 | -23/+20 |
| | |||||
* | color: New API to check if stat() is necessary | Tavian Barnes | 2024-02-06 | 2 | -6/+11 |
| | |||||
* | bftw: stat() files asynchronously | Tavian Barnes | 2024-02-06 | 4 | -212/+507 |
| | |||||
* | mtab: Take the basename directly in bfs_might_be_mount() | Tavian Barnes | 2024-02-05 | 3 | -6/+5 |
| | | | | This avoids some hot xbaseoff() calls. | ||||
* | tests: Fix --stop | Tavian Barnes | 2024-02-05 | 1 | -1/+1 |
| | |||||
* | build: Rename test targets | Tavian Barnes | 2024-02-04 | 1 | -10/+15 |
| | |||||
* | ci/macos: Try the new M1 runner | Tavian Barnes | 2024-02-03 | 1 | -1/+1 |
| | |||||
* | tests: Run more integration tests by default | Tavian Barnes | 2024-02-03 | 1 | -6/+12 |
| | | | | | | | The traversal behaviour of -j1, -j2, and -jN (N >= 3) are all different enough to be worth running the whole test suite against them. Sorting (-s) is another dimension worth testing. Having these tests run automatically would have caught some recently-fixed bugs earlier. | ||||
* | tests: Implement jobserver inheritance | Tavian Barnes | 2024-02-03 | 6 | -47/+132 |
| | |||||
* | tests: Don't clobber inherited FDs | Tavian Barnes | 2024-02-01 | 12 | -52/+46 |
| | | | | | Rather than attempting to close any unexpected FDs, just count them and adjust our ulimit -n calls to account for them. | ||||
* | tests: Use variable redirections to dup std{out,err} | Tavian Barnes | 2024-02-01 | 3 | -29/+18 |
| | | | | | | | | | | | Previously, we hardcoded file descriptors 3 and 4 for duplicating stdandard output/error respectively. In preparation for keeping inherited FDs open, switch to using bash's variable redirection feature to dynamically assign FDs. This feature is only available from bash 4.1 onwards, so this marks the end of our support for bash 3. macOS users will need to install a modern bash version to run our tests. | ||||
* | ci/freebsd: Use the system compiler | Tavian Barnes | 2024-02-01 | 1 | -2/+1 |
| | | | | Release builds work now on FreeBSD 14. | ||||
* | bftw: Always block in bftw_pop_dir() with multiple threads | Tavian Barnes | 2024-02-01 | 1 | -11/+22 |
| | |||||
* | bftw: Don't immediately pin open directories | Tavian Barnes | 2024-02-01 | 1 | -4/+5 |
| | | | | | | | It is undesirable to close a directory that we haven't read yet to free up cache capacity, but it's worse to fail to open the next directory because too many upcoming directories are pinned. This could happen when sorting, because then we can't prioritize the already-opened ones. | ||||
* | bftw: Allow forcing bfs_dir allocation from the main thread | Tavian Barnes | 2024-02-01 | 1 | -12/+35 |
| | | | | | | | | | When sorting, we can be forced to pop an unopened directory. If enough other directories are already open, that can lead to ENOMEM when we try to open it synchronously. To avoid this, force allocations from the main thread to be attempted even if they would go over the limit. Also, fix the accounting in bftw_allocdir() if allocation fails. | ||||
* | bftw: Kill trivial bftw_queue_balance() helper | Tavian Barnes | 2024-02-01 | 1 | -7/+2 |
| | |||||
* | bfstd: Don't shadow FreeBSD's fflags_t | Tavian Barnes | 2024-02-01 | 1 | -4/+4 |
| | |||||
* | bftw: Actually stop if the callback returns BFTW_STOP | Tavian Barnes | 2024-01-31 | 3 | -1/+6 |
| | | | | | | Otherwise, bftw_ids() or bftw_eds() might keep going! Fixes: 5f16169 ("bftw: Share the bftw_state between iterations of ids/eds") | ||||
* | opt: Charge eval_flags() for a stat() call | Tavian Barnes | 2024-01-31 | 1 | -0/+1 |
| | |||||
* | bftw: Optimize -s -j2 searches | Tavian Barnes | 2024-01-31 | 1 | -2/+1 |
| | | | | | Maintaining balance and strict ordering at the same time forces too much work onto the main thread. | ||||
* | bftw: Use a bftw_queue for files too | Tavian Barnes | 2024-01-31 | 1 | -26/+31 |
| | |||||
* | bftw: New bftw_queue abstraction | Tavian Barnes | 2024-01-31 | 1 | -74/+292 |
| | |||||
* | list: Return the next cursor from SLIST_INSERT() | Tavian Barnes | 2024-01-30 | 1 | -7/+10 |
| | |||||
* | eval: Squelch an uninitialized variable warning | Tavian Barnes | 2024-01-22 | 1 | -1/+3 |
| | |||||
* | ioq: Implement ioq_stat() | Tavian Barnes | 2024-01-18 | 3 | -10/+124 |
| | |||||
* | ioq: Refactor to take advantage of -Wswitch | Tavian Barnes | 2024-01-18 | 1 | -71/+91 |
| | |||||
* | stat: Expose bfs_{fstatat,statx}_flags() | Tavian Barnes | 2024-01-18 | 2 | -21/+47 |
| | |||||
* | stat: Expose bfs_stat{,x}_convert() | Tavian Barnes | 2024-01-18 | 2 | -103/+121 |
| | |||||
* | tests/posix: Avoid catastrophic backtracking | Tavian Barnes | 2024-01-17 | 2 | -11/+2 |
| | | | | | | Using -path 'deep/*/*/.../*' to simulate -mindepth 18 falls off a performance cliff on systems that use backtracking for fnmatch(). This was observed on macOS 12.4. Instead, just use -type f. | ||||
* | xspawn: Check for _POSIX_SPAWN in bfs_spawn_addfchdir() | Tavian Barnes | 2024-01-17 | 1 | -1/+1 |
| | |||||
* | fsade: Mark bfs_acl_tag_type() as maybe_unused | Tavian Barnes | 2024-01-17 | 1 | -0/+1 |
| | | | | | It's not used on at least macOS, which doesn't have ACL_{USER,GROUP}_OBJ or ACL_OTHER. | ||||
* | tests: Properly filter escape sequences with --verbose=tests | Tavian Barnes | 2024-01-13 | 1 | -1/+1 |
| | |||||
* | ioq: Use the negative errno convention | Tavian Barnes | 2024-01-13 | 5 | -26/+33 |
| | |||||
* | bfstd: New {error,errno}_is_like() functions | Tavian Barnes | 2024-01-13 | 6 | -35/+45 |
| | | | | | | | We used to have is_nonexistence_error() to consistently treat ENOENT and ENOTDIR the same. Recently, we started considering EFAULT the same as ENAMETOOLONG on DragonFly BSD to work around a kernel bug. Unify both of these behind a more generic interface. | ||||
* | tests.h: Add a header guard | Tavian Barnes | 2024-01-13 | 1 | -0/+5 |
| | |||||
* | tests: Merge unit test executables into one | Tavian Barnes | 2024-01-12 | 8 | -23/+166 |
| | |||||
* | tests: New output format | Tavian Barnes | 2024-01-11 | 1 | -13/+28 |
| | |||||
* | ci: Add an OmniOS builder | Tavian Barnes | 2024-01-09 | 1 | -0/+32 |
| | |||||
* | tests: Don't do chmod +s | Tavian Barnes | 2024-01-09 | 1 | -2/+3 |
| | | | | | | | | | | | | | | | | | | POSIX says > When using the symbolic mode form on a regular file, it is > implementation-defined whether or not: > > - Requests to set the set-user-ID-on-execution or set-group-ID-on- > execution bit when all execute bits are currently clear and none > are being set are ignored. And indeed, illumos ignores them with a warning: chmod: WARNING: /tmp/bfs.XXXX7KaGWb/rainbow/suid: Execute permission required for set-ID on execution Link: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html | ||||
* | config: Disable sys/acl.h on illumos | Tavian Barnes | 2024-01-09 | 1 | -1/+1 |
| | | | | | | Their ACL API is quite a bit different from most. Link: https://illumos.org/man/2/acl | ||||
* | build: Link with -lsocket -lnsl on illumos | Tavian Barnes | 2024-01-09 | 1 | -0/+4 |
| | | | | Link: https://illumos.org/man/3SOCKET/bind | ||||
* | build: Define _POSIX_PTHREAD_SEMANTICS for illumos | Tavian Barnes | 2024-01-09 | 1 | -0/+1 |
| | | | | | | Needed for the POSIX-compliant version of some interfaces. Link: https://illumos.org/man/3C/getpwnam | ||||
* | tests/bfs/D_opt: New test for more -D opt coverage | Tavian Barnes | 2024-01-07 | 2 | -0/+19 |
| | |||||
* | eval: Check for xbasename() allocation failure | Tavian Barnes | 2024-01-07 | 1 | -1/+8 |
| | |||||
* | expr: Make expressions variadic | Tavian Barnes | 2024-01-07 | 8 | -890/+1719 |
| | | | | | | | | | Rather than only unary/binary expressions, we now support an arbitrary number of children. The optimizer has been re-written almost completely and now supports optimal reordering of longer expression chains, rather than just arm-swapping. Fixes #85. |