summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Implement -printxTavian Barnes2017-07-215-0/+81
| | | | Also from NetBSD.
* main: Call setlocale() at startup to use the system localeTavian Barnes2017-07-202-0/+14
|
* eval: Add some sanity checksTavian Barnes2017-07-204-0/+35
|
* Implement -exit [STATUS]Tavian Barnes2017-07-206-12/+75
| | | | From NetBSD again.
* Implement -rm as an alias for -deleteTavian Barnes2017-07-204-4/+25
| | | | From NetBSD.
* Revert "tests.sh: Better line overwriting"Tavian Barnes2017-07-201-4/+5
| | | | | | This reverts commit 4b02d5dae771a8797868ccaddf1bbb7cf0b67c2b. Overwriting the last line of the test output is worse.
* tests.sh: Better line overwritingTavian Barnes2017-07-181-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 namesakeTavian Barnes2017-07-181-3/+3
|
* tests.sh: Close extraneous fds for tests that depend on ulimitTavian Barnes2017-07-161-0/+17
|
* parse: Ask for confirmation in some casesTavian Barnes2017-07-162-108/+157
|
* Handle yes/no prompts correctly according to the localeTavian Barnes2017-07-153-7/+80
|
* parse: Warn if -depth and -prune are used togetherTavian Barnes2017-07-091-0/+19
|
* Handle ENOTDIR the same as ENOENTTavian Barnes2017-07-0911-3/+21
| | | | | | 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: Rename and refactor the internalsTavian Barnes2017-07-091-235/+257
|
* bftw: Fix ENAMETOOLONG handling when the root is closedTavian Barnes2017-07-084-12/+33
| | | | | The root has depth == 0, but we still need to include it in the components array.
* exec: Clear errno when a multi-exec doesn't failTavian Barnes2017-07-081-1/+6
| | | | | | | This fixes strange "Inappropriate ioctl for device" errors when using -exec ... + with output redirection. errno was set to ENOTTY by the isatty() call during startup for color auto-detection, and never cleared before eval_exec() wants to check if anything went wrong.
* bftw: Recover from ENAMETOOLONGTavian Barnes2017-07-083-23/+137
| | | | | | | | | | | | | | | | | | | | | | | | 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).
* Revert "bftw: Don't store the terminating '\0' in dircache_entry names."Tavian Barnes2017-07-081-1/+2
| | | | | | | This reverts commit 20860becb5a0e89ee2aaaddbb0ba1eb248552640. The terminating NUL will be useful for the upcoming per-component traversal to handle ENAMETOOLONG.
* Release 1.0.21.0.2Tavian Barnes2017-06-153-2/+13
|
* -perm: Handle permcopy (e.g. u=rw,g=u) correctlyTavian Barnes2017-06-153-5/+22
|
* tests: Fix test_printf_nul with non-GNU sortTavian Barnes2017-06-112-1/+7
| | | | | Other UNIX sort implementations seem to truncate at the nul bytes, so open-code it without the sort.
* printf: Fix embedded nul bytesTavian Barnes2017-06-105-11/+37
| | | | Fixes #26.
* parse: Make some error messages redTavian Barnes2017-06-031-2/+4
|
* Add Homebrew installation instructionsPeter Brunner2017-06-031-0/+2
|
* Release 1.0.11.0.1Tavian Barnes2017-05-173-2/+14
|
* parse: Set always_true for some actions that never return falseTavian Barnes2017-05-171-3/+25
|
* bftw: Remove unused parameter to dircache_entry_base()Tavian Barnes2017-05-171-5/+3
|
* Add colors to -D treeTavian Barnes2017-05-153-37/+51
|
* Optimize based on reachability due to -quitTavian Barnes2017-05-152-43/+85
|
* Don't make -quit disable the implicit -printTavian Barnes2017-05-113-3/+9
|
* Implement -D execTavian Barnes2017-05-094-13/+63
|
* main: Fix error checking of redirect()Tavian Barnes2017-05-061-1/+3
|
* exec: Treat -1 from _SC_ARG_MAX as "unlimited"Tavian Barnes2017-04-301-1/+1
|
* mtab: Check __GLIBC__ instead of __linux__ for getmntent()Tavian Barnes2017-04-301-2/+2
|
* Pass AT_EACCESS to faccessat()Tavian Barnes2017-04-302-2/+2
| | | | | That's the form that actually answers the expected question ("can I open() this"), and the only form Hurd supports.
* Don't forget an access mode to openat() in -emptyTavian Barnes2017-04-301-1/+1
|
* Don't parse the mount table until it's neededTavian Barnes2017-04-293-12/+14
|
* mtab: Don't hardcode /etc/mtabTavian Barnes2017-04-291-1/+1
|
* Add Debian installation instructions.Chris Lamb2017-04-291-0/+2
|
* Release 1.01.0Tavian Barnes2017-04-2412-11/+42
|
* Implement -fstypeTavian Barnes2017-04-2310-7/+319
| | | | Fixes #6!
* Make -help output prettier and more completeTavian Barnes2017-04-162-50/+260
|
* tests.sh: Allow individual tests to be specified on the command lineTavian Barnes2017-04-161-10/+16
|
* Implement -XTavian Barnes2017-04-167-0/+51
|
* tests: Add tests for bfs extensions to -exec ... +Tavian Barnes2017-04-163-0/+22
|
* exec: Interpret ARG_MAX corretly.Tavian Barnes2017-04-152-34/+117
| | | | Thanks to https://www.in-ulm.de/~mascheck/various/argmax/
* exec: close() the working directory even if !ftwbufTavian Barnes2017-04-151-1/+1
|
* Implement -exec/-execdir ... +Tavian Barnes2017-04-1510-227/+618
|
* util.h: Don't use a forward reference to enum bftw_typeflagTavian Barnes2017-04-131-0/+1
| | | | Apparently that's not allowed in standard C.
* tests.sh: Use eval instead of declare -gTavian Barnes2017-04-081-1/+1
| | | | Turns out declare -g is from Bash 4 too.