summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-02-23Bump the version to 0.70.0.70Tavian Barnes
2016-02-23Implement -O.Tavian Barnes
2016-02-23Implement -D tree.Tavian Barnes
2016-02-23bftw: Update at_flags when not following a broken symbolic link.Tavian Barnes
2016-02-23bftw: Plug a leak when the root is not a directory.Tavian Barnes
2016-02-22Implement -D stat.Tavian Barnes
2016-02-22bftw: Use the currently open directory as at_fd in BFTW_CHILD mode.Tavian Barnes
2016-02-21Simplify double-negation.Tavian Barnes
2016-02-21bftw: Use O_CLOEXEC.Tavian Barnes
2016-02-21Make optimizations based on the purity of predicates.Tavian Barnes
This allows something like $ ./bfs -empty -false to avoid evaluating -empty, just like find.
2016-02-21Fix infinite recursion in eval_not().Tavian Barnes
And use a helper function to prevent this kind of bug in the future.
2016-02-21bftw: Don't store the terminating '\0' in dircache_entry names.Tavian Barnes
2016-02-21bftw: Use a better cache eviction policy.Tavian Barnes
Instead of simple LRU, we now evict the open entry with the lowest refcount. This reduces the average number of components passed to openat() by a significant margin, and speeds bfs up by about ~5%.
2016-02-20bftw: Shrink the LRU before finding the parent.Tavian Barnes
Otherwise we might close the found parent.
2016-02-19bftw: Clean up dirqueue implementation a bit.Tavian Barnes
2016-02-19bftw: Don't keep DIR*'s around.Tavian Barnes
DIR*'s were being kept around so dirfd(dir) could be passed to future openat() calls. But DIR*'s are big, holding a cache of filenames etc. read by readdir(). Instead, store the raw fd and dup() it to open a DIR* with fdopendir(). This way we can call dirclose() as soon as possible, while still keeping an open fd. Ideally there would be a way to closedir() without invoking close() on the underlying fd, but this is a good approximation. Reduces memory footprint by around 64% in a large directory tree.
2016-02-18-follow is a positional option.Tavian Barnes
2016-02-17bftw: Use a circular buffer to implement the dirqueue.Tavian Barnes
2016-02-17Fix an uninitialized value warning.Tavian Barnes
2016-02-17Initialize expr.cmp for -user and -group.Tavian Barnes
2016-02-16Add missing "error:" tag to error messages.Tavian Barnes
2016-02-14Makefile: Add install and uninstall targets.Tavian Barnes
2016-02-14Set the version to 0.67.0.67Tavian Barnes
For now, version numbers are the fraction of GNU find features supported.
2016-02-14Implement -user and -group.Tavian Barnes
2016-02-14s/color_table/colors/.Tavian Barnes
2016-02-14Refactor color handling.Tavian Barnes
The main benefit is colored warnings/errors during parsing.
2016-02-14Don't modify the result of getenv().Tavian Barnes
2016-02-14Implement -lname and -ilname.Tavian Barnes
2016-02-14"Implement" -noleaf.Tavian Barnes
2016-02-14Implement -mount/-xdev.Tavian Barnes
2016-02-14Add brief -help and -version support.Tavian Barnes
2016-02-14Don't stop early just because deleting failed.Tavian Barnes
2016-02-13Implement -iname and -ipath.Tavian Barnes
2016-02-13Fix -name handling when the root has trailing slashes.Tavian Barnes
2016-02-13Implement -xtype.Tavian Barnes
2016-02-13Follow links if appropriate in predicates.Tavian Barnes
2016-02-13More s/cl/cmdline/.Tavian Barnes
2016-02-13tests.sh: Don't re-create the same directory structures needlessly.Tavian Barnes
2016-02-12Check the number of open FDs at the start.Tavian Barnes
This fixes the issues with things like $ bfs -empty 3</dev/null
2016-02-12Consolidate some error reporting logic.Tavian Barnes
2016-02-12Use 'cmdline' instead of 'cl'.Tavian Barnes
2016-02-12Report failures that happen inside predicates.Tavian Barnes
2016-02-11Keep one fd free for the predicates themselves.Tavian Barnes
Otherwise -empty may start failing once the dircache grows. It's still possible to cause failures with $ bfs some/big/dir -empty 3</dev/null because one more fd than expected will be allocated, but that's not a common case. It could be worked around by reading /proc/self/fd/ at startup.
2016-02-10Implement -samefile.Tavian Barnes
2016-02-10Add a README.Tavian Barnes
2016-02-09Implement -L/-follow.Tavian Barnes
2016-02-06bftw: Don't give up when following a broken symlink.Tavian Barnes
2016-02-04Implement -P and -H.Tavian Barnes
2016-02-04Drive the literal parsing with a switch.Tavian Barnes
2016-02-04Implement -links.Tavian Barnes