Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | tests: Remove unnecessary sort-args.sh invocations | Tavian Barnes | 2017-08-16 | 2 | -38/+38 | |
| | ||||||
* | Unify broken symlink handling | Tavian Barnes | 2017-08-12 | 5 | -0/+6 | |
| | | | | | | | | | 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/+19 | |
| | ||||||
* | exec: Fix more corner cases with -ok ... + | Tavian Barnes | 2017-07-29 | 2 | -0/+38 | |
| | | | | -ok should look for a ; even if it sees {} +, according to POSIX. | |||||
* | exec: Don't allow anything between {} and + | Tavian Barnes | 2017-07-29 | 4 | -12/+38 | |
| | | | | | | | | | 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. | |||||
* | Fix a couple terrible optimizer bugs | Tavian Barnes | 2017-07-21 | 2 | -0/+0 | |
| | | | | | | | 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/+21 | |
| | | | | Also from NetBSD. | |||||
* | eval: Add some sanity checks | Tavian Barnes | 2017-07-20 | 2 | -0/+19 | |
| | ||||||
* | Implement -exit [STATUS] | Tavian Barnes | 2017-07-20 | 1 | -0/+16 | |
| | | | | From NetBSD again. | |||||
* | Implement -rm as an alias for -delete | Tavian Barnes | 2017-07-20 | 2 | -0/+2 | |
| | | | | From NetBSD. | |||||
* | Handle ENOTDIR the same as ENOENT | Tavian Barnes | 2017-07-09 | 7 | -0/+7 | |
| | | | | | | 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 | 2 | -8/+16 | |
| | | | | | 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/+8 | |
| | | | | | | | | | | | | | | | | | | | | | | | | 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/+1 | |
| | ||||||
* | tests: Fix test_printf_nul with non-GNU sort | Tavian Barnes | 2017-06-11 | 1 | -0/+0 | |
| | | | | | 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/+0 | |
| | | | | Fixes #26. | |||||
* | Don't make -quit disable the implicit -print | Tavian Barnes | 2017-05-11 | 1 | -0/+1 | |
| | ||||||
* | Implement -fstype | Tavian Barnes | 2017-04-23 | 1 | -0/+19 | |
| | | | | Fixes #6! | |||||
* | Implement -X | Tavian Barnes | 2017-04-16 | 3 | -0/+25 | |
| | ||||||
* | tests: Add tests for bfs extensions to -exec ... + | Tavian Barnes | 2017-04-16 | 2 | -0/+12 | |
| | ||||||
* | Implement -exec/-execdir ... + | Tavian Barnes | 2017-04-15 | 3 | -0/+16 | |
| | ||||||
* | tests: Run everything in UTC | Tavian Barnes | 2017-03-11 | 1 | -3/+3 | |
| | ||||||
* | Add a test for colored output | Tavian Barnes | 2017-03-11 | 1 | -0/+10 | |
| | ||||||
* | Implement -printf %Ak, %Ck, and %Tk | Tavian Barnes | 2017-03-11 | 1 | -0/+3 | |
| | ||||||
* | Add some tests for the operators themselves | Tavian Barnes | 2017-02-11 | 8 | -0/+68 | |
| | ||||||
* | Add tests for bfs's flexible command line parsing | Tavian Barnes | 2017-02-10 | 5 | -0/+10 | |
| | ||||||
* | bftw: Make the nameoff of "///" point to "/" | Tavian Barnes | 2017-02-09 | 2 | -2/+2 | |
| | | | | This simplifies a few things such as -name handling for ///. | |||||
* | Give the test cases human-readable names | Tavian Barnes | 2017-02-09 | 137 | -0/+19 | |
| | ||||||
* | Don't close stdin for -ok or -okdir | Tavian Barnes | 2017-02-09 | 2 | -0/+38 | |
| | | | | Turns out it violates POSIX, even though GNU find does it. | |||||
* | Add support for -x?type with multiple types | Tavian Barnes | 2017-02-08 | 2 | -0/+15 | |
| | | | | This functionality is already part of GNU findutils git. | |||||
* | Fix a memory leak parsing -printf | Tavian Barnes | 2017-02-06 | 1 | -0/+1 | |
| | ||||||
* | Make -quit happen immediately, not at the end of the current expression | Tavian Barnes | 2017-02-05 | 2 | -0/+1 | |
| | ||||||
* | bftw: Compute nameoff correctly for the root in BFTW_DEPTH mode | Tavian Barnes | 2017-02-05 | 1 | -0/+1 | |
| | ||||||
* | Implement -printf/-fprintf | Tavian Barnes | 2017-02-05 | 8 | -0/+89 | |
| | | | | | Based on a patch by Fangrui Song <i@maskray.me>. Closes #16. | |||||
* | Implement -nouser and -nogroup | Tavian Barnes | 2017-02-04 | 2 | -0/+0 | |
| | ||||||
* | tests: Add a test for -inum | Tavian Barnes | 2017-01-03 | 1 | -0/+1 | |
| | ||||||
* | tests: Add tests for -quit | Tavian Barnes | 2017-01-02 | 4 | -0/+6 | |
| | ||||||
* | Set _FILE_OFFSET_BITS to 64 | Tavian Barnes | 2016-12-21 | 1 | -0/+1 | |
| | | | | | With the new support for -size n[TP], this is needed to avoid overflow on 32-bit platforms. | |||||
* | Implement -mnewer | Tavian Barnes | 2016-12-20 | 2 | -0/+8 | |
| | ||||||
* | Support -[gu]id NAME like BSD find | Tavian Barnes | 2016-12-20 | 2 | -0/+38 | |
| | ||||||
* | Implement BSD find's -depth N | Tavian Barnes | 2016-12-18 | 6 | -0/+38 | |
| | ||||||
* | tests: Allow limiting the testsuite to POSIX, BSD, GNU, and bfs-specific ↵ | Tavian Barnes | 2016-12-18 | 6 | -0/+60 | |
| | | | | features | |||||
* | Implement -regex, -iregex, and -regextype/-E | Tavian Barnes | 2016-12-18 | 6 | -0/+10 | |
| | ||||||
* | tests: Don't check -size for directories | Tavian Barnes | 2016-12-05 | 4 | -26/+2 | |
| | ||||||
* | tests: Don't check -links for directories | Tavian Barnes | 2016-12-05 | 3 | -9/+0 | |
| | ||||||
* | Allow // to be different from / | Tavian Barnes | 2016-11-24 | 2 | -2/+2 | |
| | | | | | | POSIX says that // may be resolved in an implementation-defined way (generally, to access network shares). So don't use it in tests, and don't canonicalize it to '/' in -execdir. | |||||
* | tests: Mkae LC_ALL=C apply to the whole pipeline when sorting. | Tavian Barnes | 2016-11-22 | 3 | -39/+39 | |
| | ||||||
* | Support -perm +MODE for symbolic modes. | Tavian Barnes | 2016-11-21 | 1 | -0/+0 | |
| | | | | Only things like -perm +777 are disallowed by GNU find. | |||||
* | Fix -execdir for / | Tavian Barnes | 2016-11-21 | 3 | -0/+3 | |
| | ||||||
* | Fix -execdir for root paths with no slashes. | Tavian Barnes | 2016-11-21 | 1 | -1/+1 | |
| |