summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Simplify double-negation.Tavian Barnes2016-02-211-0/+5
|
* bftw: Use O_CLOEXEC.Tavian Barnes2016-02-211-3/+3
|
* Make optimizations based on the purity of predicates.Tavian Barnes2016-02-212-44/+42
| | | | | | | | This allows something like $ ./bfs -empty -false to avoid evaluating -empty, just like find.
* Fix infinite recursion in eval_not().Tavian Barnes2016-02-211-6/+13
| | | | And use a helper function to prevent this kind of bug in the future.
* bftw: Don't store the terminating '\0' in dircache_entry names.Tavian Barnes2016-02-211-2/+1
|
* bftw: Use a better cache eviction policy.Tavian Barnes2016-02-211-113/+186
| | | | | | 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%.
* bftw: Shrink the LRU before finding the parent.Tavian Barnes2016-02-201-10/+6
| | | | Otherwise we might close the found parent.
* bftw: Clean up dirqueue implementation a bit.Tavian Barnes2016-02-191-20/+28
|
* bftw: Don't keep DIR*'s around.Tavian Barnes2016-02-191-40/+75
| | | | | | | | | | | | | | | 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.
* -follow is a positional option.Tavian Barnes2016-02-181-4/+4
|
* bftw: Use a circular buffer to implement the dirqueue.Tavian Barnes2016-02-171-46/+37
|
* Fix an uninitialized value warning.Tavian Barnes2016-02-171-2/+5
|
* Initialize expr.cmp for -user and -group.Tavian Barnes2016-02-171-0/+2
|
* Add missing "error:" tag to error messages.Tavian Barnes2016-02-161-2/+2
|
* Makefile: Add install and uninstall targets.Tavian Barnes2016-02-142-3/+38
|
* Set the version to 0.67.0.67Tavian Barnes2016-02-142-3/+14
| | | | | For now, version numbers are the fraction of GNU find features supported.
* Implement -user and -group.Tavian Barnes2016-02-142-1/+100
|
* s/color_table/colors/.Tavian Barnes2016-02-144-19/+19
|
* Refactor color handling.Tavian Barnes2016-02-145-65/+122
| | | | The main benefit is colored warnings/errors during parsing.
* Don't modify the result of getenv().Tavian Barnes2016-02-142-4/+11
|
* Implement -lname and -ilname.Tavian Barnes2016-02-144-2/+67
|
* "Implement" -noleaf.Tavian Barnes2016-02-141-0/+15
|
* Implement -mount/-xdev.Tavian Barnes2016-02-143-3/+20
|
* Add brief -help and -version support.Tavian Barnes2016-02-143-2/+66
|
* Don't stop early just because deleting failed.Tavian Barnes2016-02-141-1/+1
|
* Implement -iname and -ipath.Tavian Barnes2016-02-134-10/+59
|
* Fix -name handling when the root has trailing slashes.Tavian Barnes2016-02-133-4/+60
|
* Implement -xtype.Tavian Barnes2016-02-134-6/+76
|
* Follow links if appropriate in predicates.Tavian Barnes2016-02-133-7/+7
|
* More s/cl/cmdline/.Tavian Barnes2016-02-132-49/+49
|
* tests.sh: Don't re-create the same directory structures needlessly.Tavian Barnes2016-02-131-69/+56
|
* Check the number of open FDs at the start.Tavian Barnes2016-02-121-22/+42
| | | | | | This fixes the issues with things like $ bfs -empty 3</dev/null
* Consolidate some error reporting logic.Tavian Barnes2016-02-121-7/+12
|
* Use 'cmdline' instead of 'cl'.Tavian Barnes2016-02-122-19/+19
|
* Report failures that happen inside predicates.Tavian Barnes2016-02-122-7/+30
|
* Keep one fd free for the predicates themselves.Tavian Barnes2016-02-111-3/+3
| | | | | | | | | | | | 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.
* Implement -samefile.Tavian Barnes2016-02-104-8/+66
|
* Add a README.Tavian Barnes2016-02-101-0/+93
|
* Implement -L/-follow.Tavian Barnes2016-02-094-34/+110
|
* bftw: Don't give up when following a broken symlink.Tavian Barnes2016-02-062-2/+16
|
* Implement -P and -H.Tavian Barnes2016-02-044-9/+57
|
* Drive the literal parsing with a switch.Tavian Barnes2016-02-041-82/+157
|
* Implement -links.Tavian Barnes2016-02-044-1/+32
|
* Implement -inum.Tavian Barnes2016-02-043-0/+15
|
* Implement -[ac]?newer.Tavian Barnes2016-02-045-2/+93
|
* Implements -daystart.Tavian Barnes2016-02-043-9/+48
|
* Refactor how -[acm]{min,time} are handled.Tavian Barnes2016-02-043-92/+68
|
* Leave some struct expr fields uninitialized.Tavian Barnes2016-02-041-7/+0
|
* Don't use typedefs to avoid struct/enum tags.Tavian Barnes2016-02-048-259/+254
|
* Add -gid and -uid support.Tavian Barnes2016-02-024-1/+46
|