Age | Commit message (Collapse) | Author |
|
|
|
macOS 11 comes with a broken touch(1) that ignores -h. Work around it
for now by downgrading macOS.
Link: https://apple.stackexchange.com/a/425730/397839
|
|
POSIX states that the offset is not optional in the TZ environment
variable.
Link: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html
|
|
fstatat(fd, "", buf, AT_EMPTY_PATH) fails with a nonsense errno on Hurd.
Since fstat() itself works fine, just use that.
Link: https://lists.gnu.org/archive/html/bug-hurd/2021-12/msg00001.html
|
|
Apparently they're missing on Debian kfreebsd:
https://buildd.debian.org/status/fetch.php?pkg=bfs&arch=kfreebsd-amd64&ver=2.3-1&stamp=1638379495&raw=0
|
|
|
|
|
|
This reduces the number of E2BIGs we see if binary search reaches the
top of the possible range.
|
|
Previously we would shrink the command by one argument at a time until a
successful execution. This is okay if the ARG_MAX estimate is just a
little bit off, but is terribly slow when it's off by a lot.
One situation where it's very far off is when a 32-bit build of bfs
launches a 64-bit binary. In this case, bfs thinks the argv pointers
are 4 bytes, while they actually take up 8 bytes. The performance is
quite bad:
$ time ./bfs-64 ~/code/linux -exec echo {} + >/dev/null
./bfs-64 ~/code/linux -exec echo {} + > /dev/null 0.03s user 0.07s system 99% cpu 0.095 total
$ time ./bfs-32 ~/code/linux -exec echo {} + >/dev/null
./bfs-32 ~/code/linux -exec echo {} + > /dev/null 0.08s user 10.33s system 100% cpu 10.390 total
After this change, performance is much better:
$ time ./bfs-32 ~/code/linux -exec echo {} + >/dev/null
./bfs-32 ~/code/linux -exec echo {} + > /dev/null 0.03s user 0.08s system 99% cpu 0.110 total
|
|
O_TRUNC is not equivalent to an unconditional ftruncate(), e.g. for
device files.
This reverts the behaviour change from 78944c81, which was never
released and is not supported in other find implementations.
|
|
|
|
This makes it easier to distinguish crashes from expected failures
|
|
|
|
|
|
|
|
|
|
|
|
|
|
And give some better error messages.
|
|
|
|
|
|
|
|
And use it to pass O_CLOEXEC to all FILE*'s, so the files opened for
-fprint etc. don't get passed to the programs run by -exec etc.
|
|
|
|
This fixes some potential missing output when the same file is used in a
redirection and something like -fprint. The main benefit is smarter
handling of /dev/stdout, which will now share the CFILE* with cout.
|
|
Remove completion hashbang
|
|
|
|
For consistency with other completion scripts and to silence warnings
such as https://lintian.debian.org/tags/bash-completion-with-hashbang
|
|
|
|
|
|
See https://savannah.gnu.org/bugs/?60383 for the development of the
corresponding GNU find feature.
|
|
|
|
|
|
|
|
This matches the behaviour of GNU find, and allows bfs to match the
output of BSD find as well. Fixes #77.
|
|
This should reduce the need for patches on the BSDs.
|
|
|
|
Previously reproducible with LS_COLORS="asdf=0" bfs.
|
|
If $PAGER is unset, we now try less if it exists, then fall back to
more. Colors are only used if less is the used pager, since more on
non-coreutils platforms doesn't always handle colors. Finally, less's
configuration is given on the command line, which works better if the
user has $LESS already set.
Fixes https://github.com/tavianator/bfs/issues/76.
|
|
This fixes the BFS_SPAWN_USEPATH to use the parent's environment, not
the new child's environment, to resolve the executable.
|
|
|
|
|
|
This avoids shadowing the actually standard name fallthrough.
|
|
|
|
|
|
From FreeBSD find. Closes #75.
|
|
|
|
This lets us keep more open FDs cached in bftw(). The limit is lowered
before running -exec commands, in case they're incompatible with a high
limit (e.g. due to select()).
|
|
|
|
|