summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-02-08Release 1.2.11.2.1Tavian Barnes
2018-02-06exec: Avoid a warning when building with _FORTIFY_SOURCETavian Barnes
Also, don't pass the address of errno itself to write(), since write() is allowed to modify it.
2018-02-01eval: Don't unnecessarily zero fields in struct eval_stateTavian Barnes
The designated initializer causes everything not mentioned to be zeroed, a waste of time that shows up on profiles. It also has the potential to hide uninitialized-use bugs.
2018-02-01bftw: Open-code the "."/".." checksTavian Barnes
GCC doesn't (yet) produce very fast code for strcmp() against constant strings (see https://gcc.gnu.org/PR78809), so hand-coding the comparison manually helps significantly.
2018-02-01bftw: Fix the heap implementationTavian Barnes
There were two problems: - bubble_down() would always bubble the entry all the way down the heap, instead of stopping at the appropriate place - remove() may need to bubble the replacement entry *up* the heap, if it came from a different subtree
2018-01-20Release 1.21.2Tavian Barnes
2018-01-20printf: Add %w and %Wk for file birth timesTavian Barnes
%w and %W were chosen to match the format specifiers for file birth times from stat(1)
2018-01-08stat: New wrapper around the stat() familyTavian Barnes
This lets bfs transparently support the new statx() system call on Linux, giving it access to file birth times.
2018-01-08Minor header cleanupsTavian Barnes
2018-01-06parse: Minor cleanups from af7878c/7da0d28Tavian Barnes
2018-01-06bftw: Rename 'last' to 'previous'Tavian Barnes
2017-12-15Keep track of required FDs per-exprTavian Barnes
2017-11-13exec: Minor whitespace consistency fixTavian Barnes
2017-11-13color: Optimize cfprintf() a bitTavian Barnes
2017-11-13color: Implement %m for cfprintf()Tavian Barnes
2017-11-12exec: Fix error reportingTavian Barnes
2017-11-12exec: Recover from E2BIGTavian Barnes
2017-11-12cmdline: Account for files opened during/between evaluations more carefullyTavian Barnes
2017-11-05Add support for file birth/creation times on platforms that have itTavian Barnes
Fixes #19
2017-11-05parse: Support -perm +7777, for compatibility with BSD and old GNU findTavian Barnes
2017-10-27Release 1.1.41.1.4Tavian Barnes
2017-10-26exec: Make argument size tracking robust to page-granularity accountingTavian Barnes
From looking at the Linux exec() implementation, it seems a big part of the reason we needed extra headroom was that the arguments/environment are copied page-by-page, so even a small accounting difference could result in an error of an entire page size. Grow the headroom to two entire pages to account for this.
2017-10-22exec: Apply more headroom to avoid E2BIGTavian Barnes
I ran into "argument list too long" errors with a bfs -type f -exec grep pattern '{}' + command, despite the current accounting being pretty careful. Some experimentation showed that an additional 2048 bytes of headroom is always safe. While we're at it, explicitly account for the terminating NULL pointers in argv and environ.
2017-10-22Use "error:" prefix consistentlyTavian Barnes
2017-10-21cmdline: Declare functions in a more natural orderTavian Barnes
2017-10-21parse: Keep track of what files are already openTavian Barnes
Fixes #22
2017-10-21Report errors that occur when closing filesTavian Barnes
Otherwise we miss write errors that occur when flushing the cache.
2017-10-15Add a man pageTavian Barnes
Fixes #31
2017-10-13Don't use install -DTavian Barnes
-D isn't portable to non-GNU Unices, so just use mkdir manually. Fixes #28
2017-10-04Release 1.1.31.1.3Tavian Barnes
2017-09-20tests: -quit is not POSIXTavian Barnes
2017-09-20util: Wrap faccessat() to fix some portability issuesTavian Barnes
2017-09-17opt: More -O4 tweaksTavian Barnes
2017-09-17opt: Use the standard LLONG_MAX instead of the nonstandard LONG_LONG_MAXTavian Barnes
2017-09-17opt: Fix -depth with arguments bigger than INT_MAXTavian Barnes
2017-09-17opt: Move some aggressive optimizations back to -O4Tavian Barnes
2017-09-17parse: Document the bfs meaning of -O in -helpTavian Barnes
2017-09-17opt: Have data flow analysis respect always_{true,false}Tavian Barnes
2017-09-16tests: Add tests that trigger some optimizationsTavian Barnes
2017-09-16opt: Implement some data flow optimizationsTavian Barnes
2017-09-16opt: Separate optimization from parsingTavian Barnes
2017-09-10Release 1.1.21.1.2Tavian Barnes
2017-09-09eval: Make sure nopenfd >= 2 for bftw()Tavian Barnes
2017-09-09tests: Silence error messages while creating deep/Tavian Barnes
Some platforms will print errors like "cannot access parent directories: Result too large"
2017-09-09Try /proc/self/fd before /dev/fdTavian Barnes
On Solaris, /proc/self/fd is dynamic while /dev/fd is static.
2017-09-09mtab: Add support for SolarisTavian Barnes
2017-09-07Revert "tests: Test hardlinks to symlinks"Tavian Barnes
Apparently macOS doesn't support ln -P. This reverts commit 80eec18020f531abbdb2abbb919ab6c6fa34107c.
2017-09-06parse: Don't reorder or remove tests with potential side effectsTavian Barnes
-empty and -xtype may have side effects like reporting permission errors, which even affect the exit status of bfs. We shouldn't remove these effects without -Ofast.
2017-09-06util: Factor out checks for nonexistent paths/broken linksTavian Barnes
2017-09-06parse: Factor out common initialization code for -print and friendsTavian Barnes