summaryrefslogtreecommitdiffstats
path: root/parse.c
Commit message (Collapse)AuthorAgeFilesLines
* diag: Unify debug printingTavian Barnes2020-06-021-53/+18
|
* opt: Track data flow information about predicatesTavian Barnes2020-05-221-2/+2
| | | | | | | | | | This allows us to optimize things like -sparse -o -not -sparse <==> -true and -sparse -a -not -sparse <==> -false
* pwcache: Rename from passwd.[ch]Tavian Barnes2020-04-221-1/+1
|
* parse: Use the right color when suggesting typo fixesTavian Barnes2020-03-211-113/+126
|
* parse: Add -X and -s to -D tree outputTavian Barnes2020-03-211-17/+26
|
* Implement -s flag from FreeBSD find to sort resultsTavian Barnes2020-03-211-0/+11
|
* parse: Fix color code with -D tree -xdevTavian Barnes2020-03-201-1/+1
|
* parse: Prettify some errors and warningsTavian Barnes2020-03-201-51/+57
|
* parse: Prettify some of the option-specific helpTavian Barnes2020-03-201-41/+32
|
* parse: Don't warn if POSIXLY_CORRECT is setTavian Barnes2020-03-151-2/+4
|
* diag: Make the -warn flag part of the cmdlineTavian Barnes2020-03-151-30/+23
|
* passwd: Cache the user/group tablesTavian Barnes2020-02-291-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 Barnes2020-02-291-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 -DNDEBUGTavian Barnes2020-02-251-2/+2
|
* time: Split out time-related functions from utilTavian Barnes2020-02-131-145/+14
|
* parse: Handle 1969-12-31T23:59:59ZTavian Barnes2020-02-131-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,}sinceTavian Barnes2020-02-121-20/+52
|
* parse: Set tm_isdst to -1Tavian Barnes2020-02-121-1/+3
| | | | | This is required by POSIX to ensure the mktime() determines itself whether DST is in effect.
* parse: Work around missing `timezone` on FreeBSDTavian Barnes2020-02-121-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 Barnes2020-02-111-3/+177
|
* parse: Add a missing NULL check for trie_insert_mem()Tavian Barnes2020-01-221-0/+5
|
* Update documentation for the -mount/-xdev revertTavian Barnes2019-09-141-1/+2
|
* parse: Don't treat -mount differently from -xdev yetTavian Barnes2019-09-111-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 libraryTavian Barnes2019-08-291-16/+5
|
* Make -mount and -xdev documentation alphabeticalTavian Barnes2019-07-051-3/+3
|
* Make -mount and -xdev do different thingsTavian Barnes2019-07-041-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 testsTavian Barnes2019-06-271-2/+18
|
* parse: Reorder table_entry to avoid needing to specify prefix=falseTavian Barnes2019-06-251-101/+101
|
* parse: Sort the parse tableTavian Barnes2019-06-161-6/+6
|
* parse: Reject unknown search strategiesTavian Barnes2019-06-041-1/+17
|
* parse: Use -S {bfs,dfs,ids} rather than -{bfs,dfs,ids}Tavian Barnes2019-06-041-14/+29
|
* Add documentation for -bfs/-dfs/-idsTavian Barnes2019-06-031-1/+5
|
* parse: Pipe bfs -help to a pager when interactiveTavian Barnes2019-05-311-3/+125
|
* parse: Fix some line wrappingTavian Barnes2019-05-311-2/+2
|
* Implement an iterative deepening mode (-ids)Tavian Barnes2019-05-291-1/+5
|
* Implement a depth-first mode (-dfs)Tavian Barnes2019-05-281-0/+26
|
* bftw: Visit multiple roots breadth-firstTavian Barnes2019-05-281-24/+18
| | | | This makes `bfs a b` treat `a` and `b` as siblings.
* Add documentation for -xattrTavian Barnes2019-05-241-4/+8
|
* Implement -xattr predicateTavian Barnes2019-05-241-0/+18
|
* fsade: Refactor the POSIX.1e abstractionsTavian Barnes2019-05-241-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 Barnes2019-05-041-1/+1
| | | | We can just use bfs_stat() with a NULL at_path.
* stat: Unify the flags argumentsTavian Barnes2019-05-041-2/+2
|
* Add support for the NO_COLOR environment variableTavian Barnes2019-04-271-4/+10
| | | | C.f. https://no-color.org/
* parse: Add some missing costs/probabilitiesTavian Barnes2019-04-241-0/+4
| | | | Previously we weren't re-ordering -type in front of -newerXY
* parse: Allow things like -uid ++10Tavian Barnes2019-04-211-3/+9
| | | | GNU find does too.
* trie: Make trie_remove() take a leaf instead of a keyTavian Barnes2019-04-201-2/+2
|
* trie: Store void* values rather than const void*Tavian Barnes2019-03-271-2/+2
| | | | Fewer casts needed this way.
* bftw: Work around d_type being wrong for bind mounts on LinuxTavian Barnes2019-03-061-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 filesTavian Barnes2019-03-061-21/+18
|
* Implement -uniqueTavian Barnes2019-03-011-3/+23
| | | | Closes #48