Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | printf: Add %w and %Wk for file birth times | Tavian Barnes | 2018-01-20 | 1 | -0/+6 | |
| | | | | | %w and %W were chosen to match the format specifiers for file birth times from stat(1) | |||||
* | exec: Recover from E2BIG | Tavian Barnes | 2017-11-12 | 1 | -0/+9 | |
| | ||||||
* | parse: Support -perm +7777, for compatibility with BSD and old GNU find | Tavian Barnes | 2017-11-05 | 1 | -5/+10 | |
| | ||||||
* | parse: Keep track of what files are already open | Tavian Barnes | 2017-10-21 | 1 | -4/+20 | |
| | | | | Fixes #22 | |||||
* | Report errors that occur when closing files | Tavian Barnes | 2017-10-21 | 1 | -1/+19 | |
| | | | | Otherwise we miss write errors that occur when flushing the cache. | |||||
* | tests: -quit is not POSIX | Tavian Barnes | 2017-09-20 | 1 | -1/+1 | |
| | ||||||
* | opt: Fix -depth with arguments bigger than INT_MAX | Tavian Barnes | 2017-09-17 | 1 | -0/+5 | |
| | ||||||
* | tests: Add tests that trigger some optimizations | Tavian Barnes | 2017-09-16 | 1 | -0/+40 | |
| | ||||||
* | tests: Silence error messages while creating deep/ | Tavian Barnes | 2017-09-09 | 1 | -1/+1 | |
| | | | | | Some platforms will print errors like "cannot access parent directories: Result too large" | |||||
* | Try /proc/self/fd before /dev/fd | Tavian Barnes | 2017-09-09 | 1 | -2/+8 | |
| | | | | On Solaris, /proc/self/fd is dynamic while /dev/fd is static. | |||||
* | Revert "tests: Test hardlinks to symlinks" | Tavian Barnes | 2017-09-07 | 1 | -2/+0 | |
| | | | | | | Apparently macOS doesn't support ln -P. This reverts commit 80eec18020f531abbdb2abbb919ab6c6fa34107c. | |||||
* | parse: Don't reorder or remove tests with potential side effects | Tavian Barnes | 2017-09-06 | 1 | -0/+8 | |
| | | | | | | -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. | |||||
* | tests: Test hardlinks to symlinks | Tavian Barnes | 2017-09-06 | 1 | -0/+2 | |
| | ||||||
* | tests: Make test_deep pass with other find implementations | Tavian Barnes | 2017-09-04 | 1 | -6/+5 | |
| | | | | | And move test_deep_strict to the bfs-specific tests, since it's not likely to ever pass for other implementations. | |||||
* | tests: Use human-readable filenames in links/ | Tavian Barnes | 2017-09-02 | 1 | -26/+27 | |
| | ||||||
* | tests: Remove unnecessary sort-args.sh invocations | Tavian Barnes | 2017-08-16 | 1 | -2/+2 | |
| | ||||||
* | tests: Add some syntax highlighting to --verbose | Tavian Barnes | 2017-08-12 | 1 | -3/+22 | |
| | ||||||
* | Unify broken symlink handling | Tavian Barnes | 2017-08-12 | 1 | -0/+29 | |
| | | | | | | | | | Rather than open-code the fallback logic for broken symlinks everywhere it's needed, introduce a new xfstatat() utility function that performs the fallback automatically. Using xfstatat() consistently fixes a few bugs, including cases where broken symlinks are given as arguments to predicates like -samefile. | |||||
* | tests: Add a test for -exec ... {} + with a failing command | Tavian Barnes | 2017-08-12 | 1 | -0/+8 | |
| | ||||||
* | exec: Fix more corner cases with -ok ... + | Tavian Barnes | 2017-07-29 | 1 | -0/+10 | |
| | | | | -ok should look for a ; even if it sees {} +, according to POSIX. | |||||
* | tests.sh: Add a --verbose mode | Tavian Barnes | 2017-07-29 | 1 | -22/+58 | |
| | ||||||
* | exec: Don't allow anything between {} and + | Tavian Barnes | 2017-07-29 | 1 | -27/+31 | |
| | | | | | | | | | POSIX explicitly forbids this extension: > Only a <plus-sign> that immediately follows an argument containing > only the two characters "{}" shall punctuate the end of the primary > expression. Other uses of the <plus-sign> shall not be treated as > special. | |||||
* | Re-license under the BSD Zero Clause License | Tavian Barnes | 2017-07-27 | 1 | -10/+15 | |
| | ||||||
* | Fix a couple terrible optimizer bugs | Tavian Barnes | 2017-07-21 | 1 | -0/+12 | |
| | | | | | | | Just because an expression is always true or false, doesn't mean we can execute it more often than it otherwise would be, unless it's also pure. But that's equivalent to being identically -true/-false, so just check that. | |||||
* | Implement -printx | Tavian Barnes | 2017-07-21 | 1 | -0/+5 | |
| | | | | Also from NetBSD. | |||||
* | eval: Add some sanity checks | Tavian Barnes | 2017-07-20 | 1 | -0/+10 | |
| | ||||||
* | Implement -exit [STATUS] | Tavian Barnes | 2017-07-20 | 1 | -0/+15 | |
| | | | | From NetBSD again. | |||||
* | Implement -rm as an alias for -delete | Tavian Barnes | 2017-07-20 | 1 | -4/+19 | |
| | | | | From NetBSD. | |||||
* | Revert "tests.sh: Better line overwriting" | Tavian Barnes | 2017-07-20 | 1 | -4/+5 | |
| | | | | | | This reverts commit 4b02d5dae771a8797868ccaddf1bbb7cf0b67c2b. Overwriting the last line of the test output is worse. | |||||
* | tests.sh: Better line overwriting | Tavian Barnes | 2017-07-18 | 1 | -5/+4 | |
| | | | | | This way the cursor is always at the beginning of the line, so any error output is more readable. | |||||
* | tests.sh: Make closefrom() behave like its namesake | Tavian Barnes | 2017-07-18 | 1 | -3/+3 | |
| | ||||||
* | tests.sh: Close extraneous fds for tests that depend on ulimit | Tavian Barnes | 2017-07-16 | 1 | -0/+17 | |
| | ||||||
* | Handle ENOTDIR the same as ENOENT | Tavian Barnes | 2017-07-09 | 1 | -0/+10 | |
| | | | | | | For a/b/c, ENOTDIR is returned instead of ENOENT if a or b are not directories. Handle this uniformly when detecting broken symlinks, readdir races, etc. | |||||
* | bftw: Fix ENAMETOOLONG handling when the root is closed | Tavian Barnes | 2017-07-08 | 1 | -2/+10 | |
| | | | | | The root has depth == 0, but we still need to include it in the components array. | |||||
* | bftw: Recover from ENAMETOOLONG | Tavian Barnes | 2017-07-08 | 1 | -0/+30 | |
| | | | | | | | | | | | | | | | | | | | | | | | | It is always possible to force a breadth-first traversal to encounter ENAMETOOLONG, regardless of the dircache eviction policy. As a concrete example, consider this directory structure: ./1/{NAME_MAX}/{NAME_MAX}/{NAME_MAX}/... (longer than {PATH_MAX}) ./2/{NAME_MAX}/{NAME_MAX}/{NAME_MAX}/... ./3/{NAME_MAX}/{NAME_MAX}/{NAME_MAX}/... ... (more than RLIMIT_NOFILE directories under .) Eventually, the next file to be processed will not have any parents in the cache, as the cache can only hold RLIMIT_NOFILE entries. Then the whole path must be traversed from ., which will exceed {PATH_MAX} bytes. Work around this by performing a component-by-component traversal manually when we see ENAMETOOLONG. This is required by POSIX: > The find utility shall be able to descend to arbitrary depths in a file > hierarchy and shall not fail due to path length limitations (unless a > path operand specified by the application exceeds {PATH_MAX} > requirements). | |||||
* | -perm: Handle permcopy (e.g. u=rw,g=u) correctly | Tavian Barnes | 2017-06-15 | 1 | -0/+5 | |
| | ||||||
* | tests: Fix test_printf_nul with non-GNU sort | Tavian Barnes | 2017-06-11 | 1 | -1/+7 | |
| | | | | | Other UNIX sort implementations seem to truncate at the nul bytes, so open-code it without the sort. | |||||
* | printf: Fix embedded nul bytes | Tavian Barnes | 2017-06-10 | 1 | -0/+6 | |
| | | | | Fixes #26. | |||||
* | Don't make -quit disable the implicit -print | Tavian Barnes | 2017-05-11 | 1 | -2/+7 | |
| | ||||||
* | Release 1.01.0 | Tavian Barnes | 2017-04-24 | 1 | -0/+11 | |
| | ||||||
* | Implement -fstype | Tavian Barnes | 2017-04-23 | 1 | -0/+6 | |
| | | | | Fixes #6! | |||||
* | tests.sh: Allow individual tests to be specified on the command line | Tavian Barnes | 2017-04-16 | 1 | -10/+16 | |
| | ||||||
* | Implement -X | Tavian Barnes | 2017-04-16 | 1 | -0/+7 | |
| | ||||||
* | tests: Add tests for bfs extensions to -exec ... + | Tavian Barnes | 2017-04-16 | 1 | -0/+10 | |
| | ||||||
* | Implement -exec/-execdir ... + | Tavian Barnes | 2017-04-15 | 1 | -0/+10 | |
| | ||||||
* | tests.sh: Use eval instead of declare -g | Tavian Barnes | 2017-04-08 | 1 | -1/+1 | |
| | | | | Turns out declare -g is from Bash 4 too. | |||||
* | tests: Run everything in UTC | Tavian Barnes | 2017-03-11 | 1 | -1/+2 | |
| | ||||||
* | Add a test for colored output | Tavian Barnes | 2017-03-11 | 1 | -0/+5 | |
| | ||||||
* | Implement -printf %Ak, %Ck, and %Tk | Tavian Barnes | 2017-03-11 | 1 | -1/+6 | |
| | ||||||
* | tests: Print the count of passing and failing tests | Tavian Barnes | 2017-02-11 | 1 | -13/+14 | |
| |