summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-09-24Release 1.2.41.2.4Tavian Barnes
2018-09-24Update copyright datesTavian Barnes
2018-09-12exec: Don't leave zombies around if the child fails to exec()Tavian Barnes
2018-09-10exec: More fixes for bfs_exec_debug() changing errnoTavian Barnes
2018-08-18opt: Re-run optimizations after reordering expressionsTavian Barnes
This catches new data flow inferences that can be made after swapping the children of an expression.
2018-08-16color: Fix a doc comment typoTavian Barnes
2018-08-16Add some missing fallthrough commentsTavian Barnes
2018-07-24util: Preserve errno in pipe_cloexec()Tavian Barnes
2018-07-24util: macOS doesn't have pipe2()Tavian Barnes
The code was testing for BSD, since all the normal BSDs have it. But until recently, <sys/param.h> wasn't included, so BSD was undefined even on platforms that define it. Now that it is defined appropriately, exclude macOS specifically.
2018-07-24printf: Support all standard strftime() directivesTavian Barnes
2018-07-24printf: Support %B, GNU find's undocumented birth time specifierTavian Barnes
2018-07-24stat: Don't assume blocks are 512 bytesTavian Barnes
POSIX says > The unit for the st_blocks member of the stat structure is not defined > within POSIX.1‐2008. and recommends using DEV_BSIZE from <sys/param.h> if available. Also, for -printf '%S', print 1 instead of NaN for empty files with no blocks.
2018-07-20tests: Add tests for mode 000Tavian Barnes
2018-07-20printf: Output ? for errors in %YTavian Barnes
2018-07-15Release 1.2.31.2.3Tavian Barnes
2018-07-15eval: Debug all stat() callsTavian Barnes
2018-07-12eval: Share the statbuf across multiple -xtype'sTavian Barnes
2018-07-12eval: Get rid of duplicate statbuf fieldTavian Barnes
Also shorten eval_bfs_stat() to eval_stat(). Looks like this was leftover from an incomplete conversion a while ago.
2018-07-12eval: Fix -delete when following symlinks.Tavian Barnes
Same bug as https://savannah.gnu.org/bugs/?46305. Please don't ever do this though.
2018-07-11stat: Support the glibc statx() wrapperTavian Barnes
glibc 2.28 will ship with a wrapper for the statx() system call. Currently the build is broken against it, because sys/stat.h suddenly declares all the same types that linux/stat.h does. Fix it by taking the sys/stat.h ones if they exist. Fixes #35
2018-07-08exec: Add some debugging info about failed commandsTavian Barnes
2018-07-07tests: Add some more tests for broken symlinksTavian Barnes
2018-07-07exec: Make ARG_MAX accounting a bit less restrictive with large pagesTavian Barnes
For Linux-style accounting, we really only need to handle a single page of wasted space due to rounding. Subtracting two pages for extra headroom was reasonable on systems with 4K pages, but overkill on systems like ppc64le with 64K pages. Worse yet was the fact that Alpine Linux only gives us 128K for arguments. Instead, only subtract a single page, plus the POSIX-recommended 2048 bytes. Credit to Mike Sullivan for the initial patch and testing on Alpine ppc64le. Fixes: http://build.alpinelinux.org/buildlogs/build-edge-ppc64le/testing/bfs/bfs-1.2.2-r0.log Co-authored-by: Mike Sullivan <mksully22@gmail.com>
2018-07-07tests: Use -maxdepth 0 instead of | head -n1Tavian Barnes
This avoids the potential for "broken pipe" errors observed on some systems, e.g. http://build.alpinelinux.org/buildlogs/build-edge-s390x/testing/bfs/bfs-1.2.2-r0.log
2018-07-06parse: Add some missing failure messagesTavian Barnes
2018-07-02stat: Handle platforms that don't support AT_EMPTY_PATH for fstatat()Tavian Barnes
In particular, this caused -fprint to break on Hurd since AT_EMPTY_PATH is defined and works for some syscalls but not fstatat(). Should fix: https://buildd.debian.org/status/fetch.php?pkg=bfs&arch=hurd-i386&ver=1.2.2-1&stamp=1529920401&raw=0
2018-07-02stat: Don't try to statx() on architectures without the syscallTavian Barnes
Turns out that ia64 and sh4 define all the structures and constants, but don't actually support the statx() system call itself. So instead of testing for the constants, just test for the syscall number directly. Should fix: https://buildd.debian.org/status/fetch.php?pkg=bfs&arch=ia64&ver=1.2.2-1&stamp=1529917943&raw=0 https://buildd.debian.org/status/fetch.php?pkg=bfs&arch=sh4&ver=1.2.2-1&stamp=1529917893&raw=0
2018-06-25exec: Don't assume bfs_exec_debug() doesn't change errnoTavian Barnes
2018-06-25bftw: Use bftw_action as the return type when applicableTavian Barnes
2018-06-24tests: Relax test_depth_errorTavian Barnes
Whether bfs can return children of a directory without search permission depends on whether d_type is filled in, which can't be guaranteed.
2018-06-23Release 1.2.21.2.2Tavian Barnes
2018-06-23bftw: Introduce bftw_reader typeTavian Barnes
2018-06-23tests: New test for -depth in the presence of read errorsTavian Barnes
2018-06-19eval: Don't use %m to report a non-errno errorTavian Barnes
Fixes: 2a45ad01e211d0b36056c21d5211be46195b273d
2018-06-18parse: Don't leave expr->mode_cmp uninitializedTavian Barnes
When adding support for -perm +7777, I introduced an unconditional break that should have been conditional. The bug was observable with $ ./tests.sh --verbose --bfs="valgrind $PWD/bfs" test_perm_leading_plus_symbolic Fixes: 7f8bacca4c2b1d35bb65ddf8cbf70fadf1adf66e
2018-04-07bftw: Replace the circular buffer queue with a linked listTavian Barnes
The performance is within 1% with much simpler code.
2018-04-05README: Add a repology badgeTavian Barnes
2018-03-18tests: Work around broken rm in cleanupTavian Barnes
BusyBox rm, for example, doesn't handle long paths properly, so give it some help. C.f. http://lists.busybox.net/pipermail/busybox/2018-March/086302.html
2018-03-18tests: Don't use process substitution for diffTavian Barnes
This frees up an extra FD for some diff implementations like openbox that need it when ulimit -n is low.
2018-03-18tests: Be robust to ls -i implementation that output a leading spaceTavian Barnes
2018-03-18tests: Add a --noclean option to preserve the test directoryTavian Barnes
Useful for debugging testsuite failures.
2018-03-18New 'sanitized' make targetTavian Barnes
2018-03-04mtab: Fall back on /proc/mounts if /etc/mtab isn't availableTavian Barnes
2018-02-10exec: Fix size accounting when recovering from E2BIGTavian Barnes
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