summaryrefslogtreecommitdiffstats
path: root/parse.c
Commit message (Collapse)AuthorAgeFilesLines
* Rename struct cmdline to bfs_ctxTavian Barnes2020-09-271-310/+172
| | | | | The API remains similar, with some added accessor functions for lazy initialization of the pwcache and mtab.
* stat: Rename bfs_stat_flag to _flagsTavian Barnes2020-09-181-1/+1
| | | | Flags enums should be plural.
* Implement -xattrnameTavian Barnes2020-08-131-0/+20
| | | | From macOS find.
* bftw: Make some flag names more explicitTavian Barnes2020-07-291-15/+15
|
* bftw: Rename bftw_typeflag to bftw_type, and make it not a bitmaskTavian Barnes2020-07-291-4/+5
|
* Implement exponential deepening searchTavian Barnes2020-06-161-3/+10
|
* parse: Color the optimization level differently in dump_cmdline()Tavian Barnes2020-06-071-1/+1
|
* opt: Dump the command line before optimizing with -D optTavian Barnes2020-06-071-2/+2
|
* parse: Prohibit actions inside -excludeTavian Barnes2020-06-071-1/+19
|
* Treat -nohidden like -exclude -hiddenTavian Barnes2020-06-071-7/+21
| | | | Fixes #30.
* Implement -exclude, a special form for convenient exclusionsTavian Barnes2020-06-071-0/+31
| | | | Fixes #8.
* 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
|