| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a significant optimization for conditions that need these
tables:
Benchmark #1: ./bfs ~/code/linux -nouser >/dev/null
Time (mean ± σ): 232.0 ms ± 2.5 ms [User: 44.3 ms, System: 185.0 ms]
Range (min … max): 228.7 ms … 238.7 ms 12 runs
Benchmark #2: ./bfs-1.6 ~/code/linux -nouser >/dev/null
Time (mean ± σ): 1.050 s ± 0.012 s [User: 544.2 ms, System: 500.0 ms]
Range (min … max): 1.025 s … 1.063 s 10 runs
Benchmark #3: find ~/code/linux -nouser >/dev/null
Time (mean ± σ): 1.040 s ± 0.012 s [User: 533.6 ms, System: 500.6 ms]
Range (min … max): 1.017 s … 1.054 s 10 runs
Summary
'./bfs ~/code/linux -nouser >/dev/null' ran
4.48 ± 0.07 times faster than 'find ~/code/linux -nouser >/dev/null'
4.52 ± 0.07 times faster than './bfs-1.6 ~/code/linux -nouser >/dev/null'
|
|
|
|
|
| |
GNU find's -empty returns false for devices, sockets, etc., even though
their st_size is 0. Match that behaviour.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
POSIX now says -mount should skip the whole mount point, while -xdev
should only skip its descendents.
C.f. http://austingroupbugs.net/view.php?id=1133
C.f. https://savannah.gnu.org/bugs/?42318
C.f. https://savannah.gnu.org/bugs/?54745
|
|
|
|
|
| |
It's not used by bfs, and it's difficult to support in all search
strategies.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
This makes `bfs a b` treat `a` and `b` as siblings.
|
| |
|
|
|
|
|
|
|
| |
Since we're going to want to abstract more things that aren't part of
POSIX.1e (like xattrs) in a similar way, let's give this a more generic
name. And while we're at it, give it some more precise error reporting,
and add some tests.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
C.f. https://savannah.gnu.org/bugs/?54913
C.f. https://lkml.org/lkml/2019/2/11/2027
Fixes https://github.com/tavianator/bfs/issues/37
|
| |
|
| |
|
| |
|
|
|
|
| |
Closes #48
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The proper way to check for nonexistent users/groups is to set errno to
0 before the get{grg,pwu}id() call, and check it afterwards.
On doing this, it becomes obvious that the call can fail if bftw() is
using all the available FDs, so give them some ephemeral FDs. It would
be ideal to read the user/group table only once, but this fixes the bug
for now.
|
|
|
|
|
| |
When reporting an error, we should try to stat the file first so the
message can have the right colors.
|
| |
|
| |
|
|
|
|
|
|
| |
%{cc} is now ${cc} to avoid warnings about an unrecognized format
specifier, and %P and %L are now %pP and %pL to make them look more like
standard format strings.
|
|
|
|
|
|
| |
This adds a bfs: prefix to error/warning messages for consistency with
other command line tools, and leaves only the "error:"/"warning:" part
colored like GCC. It also uniformly adds full stops after messages.
|
|
|
|
| |
And fix -newerXY if the Y time doesn't exist.
|
| |
|
|
|
|
|
|
| |
/sys/fs/cgroup, for example, doesn't return access times from statx().
That shouldn't matter unless we actually need them, so make it not an
error.
|
| |
|
| |
|
|
|
|
| |
Turns out incomplete enum types are a GNU C extension.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
| |
Also shorten eval_bfs_stat() to eval_stat(). Looks like this was
leftover from an incomplete conversion a while ago.
|
|
|
|
|
| |
Same bug as https://savannah.gnu.org/bugs/?46305. Please don't ever do
this though.
|
|
|
|
| |
Fixes: 2a45ad01e211d0b36056c21d5211be46195b273d
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This lets bfs transparently support the new statx() system call on
Linux, giving it access to file birth times.
|