Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | passwd: Cache the user/group tables | Tavian Barnes | 2020-02-29 | 1 | -6/+44 |
| | | | | | | | | | | | | | | | | | | | | | | 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' | ||||
* | parse: Give -ls and -fls an ephemeral FD for getpwuid()/getgrgid() | Tavian Barnes | 2020-02-29 | 1 | -0/+2 |
| | | | | | | Similar to 9009456c, those functions may open /etc/{passwd,group}, so they need an FD available. Right now, -ls on large trees eventually starts printing numeric IDs instead of usernames/group names. | ||||
* | parse: Don't return success for invalid parse_int() calls with -DNDEBUG | Tavian Barnes | 2020-02-25 | 1 | -2/+2 |
| | |||||
* | time: Split out time-related functions from util | Tavian Barnes | 2020-02-13 | 1 | -145/+14 |
| | |||||
* | parse: Handle 1969-12-31T23:59:59Z | Tavian Barnes | 2020-02-13 | 1 | -13/+14 |
| | | | | | mktime() returns -1 on error, but also for one second before the epoch. Compare the input against localtime(-1) to distinguish those cases. | ||||
* | Implement -{a,B,c,m,}since | Tavian Barnes | 2020-02-12 | 1 | -20/+52 |
| | |||||
* | parse: Set tm_isdst to -1 | Tavian Barnes | 2020-02-12 | 1 | -1/+3 |
| | | | | | This is required by POSIX to ensure the mktime() determines itself whether DST is in effect. | ||||
* | parse: Work around missing `timezone` on FreeBSD | Tavian Barnes | 2020-02-12 | 1 | -0/+5 |
| | | | | | FreeBSD has a function timezone() that conflicts with the global variable, despite that being specified by POSIX. Use tm_gmtoff instead. | ||||
* | Implement explicit reference times (-newerXt) | Tavian Barnes | 2020-02-11 | 1 | -3/+177 |
| | |||||
* | parse: Add a missing NULL check for trie_insert_mem() | Tavian Barnes | 2020-01-22 | 1 | -0/+5 |
| | |||||
* | Update documentation for the -mount/-xdev revert | Tavian Barnes | 2019-09-14 | 1 | -1/+2 |
| | |||||
* | parse: Don't treat -mount differently from -xdev yet | Tavian Barnes | 2019-09-11 | 1 | -1/+8 |
| | | | | | | | | The new POSIX version with -mount isn't out yet, so there's no point in conforming to a non-existent document while breaking compatibility with GNU find, which hasn't changed yet either. But a warning is added for the future incompatibility. This patch can be reverted to re-enable the feature. | ||||
* | darray: New dynamic array library | Tavian Barnes | 2019-08-29 | 1 | -16/+5 |
| | |||||
* | Make -mount and -xdev documentation alphabetical | Tavian Barnes | 2019-07-05 | 1 | -3/+3 |
| | |||||
* | Make -mount and -xdev do different things | Tavian Barnes | 2019-07-04 | 1 | -13/+38 |
| | | | | | | | | | 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 | ||||
* | parse: Add costs for -*able tests | Tavian Barnes | 2019-06-27 | 1 | -2/+18 |
| | |||||
* | parse: Reorder table_entry to avoid needing to specify prefix=false | Tavian Barnes | 2019-06-25 | 1 | -101/+101 |
| | |||||
* | parse: Sort the parse table | Tavian Barnes | 2019-06-16 | 1 | -6/+6 |
| | |||||
* | parse: Reject unknown search strategies | Tavian Barnes | 2019-06-04 | 1 | -1/+17 |
| | |||||
* | parse: Use -S {bfs,dfs,ids} rather than -{bfs,dfs,ids} | Tavian Barnes | 2019-06-04 | 1 | -14/+29 |
| | |||||
* | Add documentation for -bfs/-dfs/-ids | Tavian Barnes | 2019-06-03 | 1 | -1/+5 |
| | |||||
* | parse: Pipe bfs -help to a pager when interactive | Tavian Barnes | 2019-05-31 | 1 | -3/+125 |
| | |||||
* | parse: Fix some line wrapping | Tavian Barnes | 2019-05-31 | 1 | -2/+2 |
| | |||||
* | Implement an iterative deepening mode (-ids) | Tavian Barnes | 2019-05-29 | 1 | -1/+5 |
| | |||||
* | Implement a depth-first mode (-dfs) | Tavian Barnes | 2019-05-28 | 1 | -0/+26 |
| | |||||
* | bftw: Visit multiple roots breadth-first | Tavian Barnes | 2019-05-28 | 1 | -24/+18 |
| | | | | This makes `bfs a b` treat `a` and `b` as siblings. | ||||
* | Add documentation for -xattr | Tavian Barnes | 2019-05-24 | 1 | -4/+8 |
| | |||||
* | Implement -xattr predicate | Tavian Barnes | 2019-05-24 | 1 | -0/+18 |
| | |||||
* | fsade: Refactor the POSIX.1e abstractions | Tavian Barnes | 2019-05-24 | 1 | -7/+5 |
| | | | | | | | 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. | ||||
* | stat: Get rid of bfs_fstat() | Tavian Barnes | 2019-05-04 | 1 | -1/+1 |
| | | | | We can just use bfs_stat() with a NULL at_path. | ||||
* | stat: Unify the flags arguments | Tavian Barnes | 2019-05-04 | 1 | -2/+2 |
| | |||||
* | Add support for the NO_COLOR environment variable | Tavian Barnes | 2019-04-27 | 1 | -4/+10 |
| | | | | C.f. https://no-color.org/ | ||||
* | parse: Add some missing costs/probabilities | Tavian Barnes | 2019-04-24 | 1 | -0/+4 |
| | | | | Previously we weren't re-ordering -type in front of -newerXY | ||||
* | parse: Allow things like -uid ++10 | Tavian Barnes | 2019-04-21 | 1 | -3/+9 |
| | | | | GNU find does too. | ||||
* | trie: Make trie_remove() take a leaf instead of a key | Tavian Barnes | 2019-04-20 | 1 | -2/+2 |
| | |||||
* | trie: Store void* values rather than const void* | Tavian Barnes | 2019-03-27 | 1 | -2/+2 |
| | | | | Fewer casts needed this way. | ||||
* | bftw: Work around d_type being wrong for bind mounts on Linux | Tavian Barnes | 2019-03-06 | 1 | -5/+8 |
| | | | | | | 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 | ||||
* | parse: Use a trie to hold currently open files | Tavian Barnes | 2019-03-06 | 1 | -21/+18 |
| | |||||
* | Implement -unique | Tavian Barnes | 2019-03-01 | 1 | -3/+23 |
| | | | | Closes #48 | ||||
* | parse: Wrap -help output at 80 chars | Tavian Barnes | 2019-02-13 | 1 | -3/+4 |
| | |||||
* | Fix missing color escape ($) in the -help output | Tavian Barnes | 2019-02-12 | 1 | -1/+1 |
| | |||||
* | Add some documentation comments | Tavian Barnes | 2019-02-09 | 1 | -0/+7 |
| | |||||
* | Re-write the help/manpage | Tavian Barnes | 2019-02-06 | 1 | -164/+125 |
| | | | | | | I'm not sure people care very much whether the functionality they're looking up originated in POSIX/BSD/GNU find (and if they do, they can check those docs). | ||||
* | parse: Treat -d as a flag, not an option | Tavian Barnes | 2019-02-06 | 1 | -2/+2 |
| | | | | | | This is consistent with BSD find, not with GNU find. But the GNU find feature was an (incorrect) attempt to be compatible with BSD find anyway. | ||||
* | parse: Add support for whiteouts in -type/-xtype | Tavian Barnes | 2019-02-06 | 1 | -0/+4 |
| | | | | FreeBSD find supports this. | ||||
* | Fix -nouser/-nogroup error handling | Tavian Barnes | 2019-02-06 | 1 | -0/+2 |
| | | | | | | | | | | 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. | ||||
* | parse: Remove the recommendation to check find -help or man find | Tavian Barnes | 2019-02-01 | 1 | -6/+3 |
| | | | | bfs has had a comprehensive help text and man page for a while now. | ||||
* | parse: Allow multiple comma-separated debug flags | Tavian Barnes | 2019-01-11 | 1 | -46/+81 |
| | |||||
* | posix1e: Don't #include <sys/capability.h> on FreeBSD | Tavian Barnes | 2019-01-03 | 1 | -0/+1 |
| | | | | | | | | The file is there by default, but deprecated and not a POSIX.1E implementation. While I'm at it, move the logic to posix1e.h so other files aren't burdened with an extra include. Fixes the other half of #40. | ||||
* | color: Check format strings + args for cfprintf() | Tavian Barnes | 2019-01-02 | 1 | -219/+221 |
| | | | | | | %{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. |