Age | Commit message (Collapse) | Author | |
---|---|---|---|
2022-03-09 | bftw: Fix open FD accounting | Tavian Barnes | |
Due to the introduction of bfs_dir, we don't need to reserve an extra file descriptor for the currently open directory. | |||
2022-03-09 | bftw: Keep root paths at the head of the LRU list | Tavian Barnes | |
With a low ulimit -n, this brings performance back in line with the old heap based implementation. | |||
2022-03-09 | bftw: Bring back the LRU list | Tavian Barnes | |
2022-01-18 | bftw: Use a dynamic array for the cache | Tavian Barnes | |
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. | |||
2022-01-18 | util: New close() wrappers to check for EBADF and preserve errno | Tavian Barnes | |
2021-03-10 | bftw: Fix bftw_type() for broken links and BFS_STAT_FOLLOW | Tavian Barnes | |
This fixes link target coloring for broken links with -L. | |||
2021-02-05 | Update copyright dates | Tavian Barnes | |
2021-01-29 | bftw: Share the fd between the cache and open bfs_dir | Tavian Barnes | |
This avoids many dup()s. On Linux, we can completely avoid needing to dup() directory fds. On non-Linux, we only dup() when there are unexplored subdirectories. | |||
2021-01-28 | dir: New DIR* facade | Tavian Barnes | |
2021-01-28 | bftw: Get rid of bftw_reader | Tavian Barnes | |
2021-01-28 | bftw: Avoid allocating when handling ENAMETOOLONG | Tavian Barnes | |
2021-01-28 | bftw: Allow for NULL base when recovering from EMFILE | Tavian Barnes | |
2020-11-12 | Include what I use | Tavian Barnes | |
Thanks to https://github.com/include-what-you-use/include-what-you-use | |||
2020-11-04 | Enable -Wsign-compare to catch bugs like 726d7801 | Tavian Barnes | |
2020-10-13 | util: New BFS_FLEX_SIZEOF() macro for more precise flexible array allocations | Tavian Barnes | |
See http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_282.htm for all the fun behind this. | |||
2020-09-20 | bftw: Fix bftw_cached_stat() with BFS_STAT_TRYFOLLOW | Tavian Barnes | |
2020-09-18 | stat: Rename bfs_stat_flag to _flags | Tavian Barnes | |
Flags enums should be plural. | |||
2020-09-18 | Don't call stat() just to determine symbolic lengths | Tavian Barnes | |
The new bftw_cached_stat() helper gets us stat info if we already have it, but doesn't call stat() if we don't. In that case we just take a guess for the initial length to readlinkat(). This lets us avoid stat() entirely in many cases for -lname and -printf %l. | |||
2020-07-29 | bftw: Make some flag names more explicit | Tavian Barnes | |
2020-07-29 | bftw: Rename bftw_typeflag to bftw_type, and make it not a bitmask | Tavian Barnes | |
2020-06-16 | Implement exponential deepening search | Tavian Barnes | |
2020-06-12 | bftw: Factor out some of the iterative deepening harness | Tavian Barnes | |
2020-06-12 | bftw: Only do another level of deepening if there are unexplored directories | Tavian Barnes | |
This makes -S ids about 20% faster on a checkout of the Linux kernel. | |||
2020-06-12 | bftw: Make iterative deepening actually do depth-first search | Tavian Barnes | |
bftw_stream() was always pushing to the end of the queue, resulting in breadth-first behaviour even when BFTW_DFS was set. This made iterative deepening a "worst of both worlds" with the same memory use as BFS, but much slower due to re-traversals. Fix it by re-using bftw_batch_{start,finish} from bftw_batch(). | |||
2020-03-21 | Implement -s flag from FreeBSD find to sort results | Tavian Barnes | |
2020-03-20 | bftw: Use a two-star approach to the bftw_queue linked list | Tavian Barnes | |
2019-11-01 | bftw: Avoid shadowing a variable | Tavian Barnes | |
2019-08-29 | mtab: Rename maybe_mount to might_be_mount | Tavian Barnes | |
2019-07-04 | Make -mount and -xdev do different things | Tavian Barnes | |
POSIX now says -mount should skip the whole mount point, while -xdev should only skip its descendents. C.f. http://austingroupbugs.net/view.php?id=1133 C.f. https://savannah.gnu.org/bugs/?42318 C.f. https://savannah.gnu.org/bugs/?54745 | |||
2019-07-04 | bftw: Track the root bftw_file, not just the path | Tavian Barnes | |
2019-07-03 | bftw: Use a flags enum rather than two bools for bftw_release_*() | Tavian Barnes | |
2019-06-27 | bftw: Remove a dead assignment | Tavian Barnes | |
2019-06-25 | bftw: Only rebuild the part of the path that changes | Tavian Barnes | |
This is a re-introduction of 998ba6f, which was reverted by the introduction of bftw_reader in 68ae5d0. It's particularly relevant for depth-first searches now that we queue each file before visiting it. | |||
2019-06-25 | bftw: Queue individual files in depth-first mode | Tavian Barnes | |
This makes the order be truly depth-first. | |||
2019-06-25 | bftw: Don't store bftw_file in bftw_reader | Tavian Barnes | |
2019-06-25 | bftw: Remove BFTW_SKIP_SIBLINGS | Tavian Barnes | |
It's not used by bfs, and it's difficult to support in all search strategies. | |||
2019-06-25 | bftw: Rename bftw_dir to bftw_file | Tavian Barnes | |
2019-06-25 | bftw: Don't store trailing slashes in bftw_dir names | Tavian Barnes | |
2019-06-25 | util: Filter out . and .. in xreaddir() | Tavian Barnes | |
2019-05-29 | Implement an iterative deepening mode (-ids) | Tavian Barnes | |
2019-05-28 | Implement a depth-first mode (-dfs) | Tavian Barnes | |
2019-05-28 | bftw: Visit multiple roots breadth-first | Tavian Barnes | |
This makes `bfs a b` treat `a` and `b` as siblings. | |||
2019-05-28 | bftw: Refactor the implementation a bit | Tavian Barnes | |
2019-05-23 | bftw: Take dir->{dev,ino} from the right stat buffer | Tavian Barnes | |
I don't think this can cause any observable bugs, but it's still wrong. | |||
2019-05-05 | bftw: Pass a const struct BFTW * to the callback | Tavian Barnes | |
2019-05-04 | bftw: Add a caching stat() API to struct BFTW | Tavian Barnes | |
2019-05-04 | stat: Unify the flags arguments | Tavian Barnes | |
2019-04-15 | Release 1.41.4 | Tavian Barnes | |
2019-03-06 | bftw: Work around d_type being wrong for bind mounts on Linux | Tavian Barnes | |
C.f. https://savannah.gnu.org/bugs/?54913 C.f. https://lkml.org/lkml/2019/2/11/2027 Fixes https://github.com/tavianator/bfs/issues/37 | |||
2019-03-06 | bftw: Switch from taking separate parameters to a parameters struct | Tavian Barnes | |