summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* parse: Prohibit actions inside -excludeTavian Barnes2020-06-073-1/+28
|
* README: Remove unnecessary single quotes from exampleTavian Barnes2020-06-071-1/+1
|
* Treat -nohidden like -exclude -hiddenTavian Barnes2020-06-076-23/+48
| | | | Fixes #30.
* Implement -exclude, a special form for convenient exclusionsTavian Barnes2020-06-0710-21/+146
| | | | Fixes #8.
* opt: Make sure facts_when_impure sees *all* impure literalsTavian Barnes2020-06-072-3/+11
|
* diag: Unify debug printingTavian Barnes2020-06-0210-156/+262
|
* opt: Add missing #include <unistd.h>Tavian Barnes2020-05-221-0/+1
|
* opt: Track data flow information about predicatesTavian Barnes2020-05-227-37/+280
| | | | | | | | | | This allows us to optimize things like -sparse -o -not -sparse <==> -true and -sparse -a -not -sparse <==> -false
* Makefile: Pass -fsanitize-memory-track-origins for msan buildsTavian Barnes2020-05-221-1/+1
|
* Merge pull request #59 from rHermes/fix-spelling-in-fsadeTavian Barnes2020-05-221-2/+2
|\ | | | | Fix spelling mistake in fsade.h
| * Fix spelling mistake in fsade.hrHermes2020-05-221-2/+2
|/
* Release 1.71.7Tavian Barnes2020-04-223-2/+12
|
* pwcache: Rename from passwd.[ch]Tavian Barnes2020-04-227-9/+9
|
* Makefile: Don't use target-specific variables for configuration targetsTavian Barnes2020-03-241-17/+28
| | | | | | | | | | | | | | | | | | | In things like release: CFLAGS := ... release: bfs CFLAGS is only set for the dependencies of release, so $ make release check doesn't set CFLAGS for tests/mksock. For the same reason, $ make asan ubsan was broken, because only the asan flags would be set for bfs. Fix it by checking MAKECMDGOALS for those targets manually instead.
* Makefile: Add asan, msan, ubsan targetsTavian Barnes2020-03-231-3/+12
|
* Makefile: Use --sudo for every distcheck testTavian Barnes2020-03-231-11/+10
|
* opt: Avoid dangling pointers in de_morgan()Tavian Barnes2020-03-231-5/+7
| | | | | | | | If optimize_{and,or}_expr() relocates expr, we need to update the parent expr or else we might return garbage. It seems impossible to actually trigger this bug right now, since the {and,or} optimizations are symmetric, but it could be hit if the simplifications in de_morgan() expose more information than was known previously.
* 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-219-3/+208
|
* bftw: Use a two-star approach to the bftw_queue linked listTavian Barnes2020-03-201-58/+28
|
* parse: Fix color code with -D tree -xdevTavian Barnes2020-03-201-1/+1
|
* parse: Prettify some errors and warningsTavian Barnes2020-03-202-52/+58
|
* parse: Prettify some of the option-specific helpTavian Barnes2020-03-202-42/+38
|
* Merge pull request #57 from tavianator/cirrusTavian Barnes2020-03-163-1/+17
|\ | | | | cirrus: Add a Cirrus CI build to test FreeBSD
| * cirrus: Add a Cirrus CI build to test FreeBSDTavian Barnes2020-03-163-1/+17
| | | | | | | | Fixes #41.
* | fsade: Fix default ACL processing.Tavian Barnes2020-03-161-38/+50
| | | | | | | | | | | | For default ACLs, any entries at all makes them non-trivial. C.f.: https://lists.freebsd.org/pipermail/posix1e/2014-July/000517.html
* | parse: Don't warn if POSIXLY_CORRECT is setTavian Barnes2020-03-151-2/+4
| |
* | exec: Warn if a command dies abnormallyTavian Barnes2020-03-152-9/+6
| |
* | diag: Make the -warn flag part of the cmdlineTavian Barnes2020-03-153-40/+37
|/
* README: Put the binary package instructions firstTavian Barnes2020-03-021-20/+20
|
* README: Replace the screenshot with an animationTavian Barnes2020-03-021-3/+3
|
* passwd: Make earlier entries override later onesTavian Barnes2020-03-021-4/+12
|
* tests: Add a test for -printf %u/%g with a low ulimitTavian Barnes2020-03-011-0/+7
|
* passwd: Cache the user/group tablesTavian Barnes2020-02-298-35/+471
| | | | | | | | | | | | | | | | | | | | | | 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.
* Release 1.61.6Tavian Barnes2020-02-253-2/+11
|
* parse: Don't return success for invalid parse_int() calls with -DNDEBUGTavian Barnes2020-02-251-2/+2
|
* eval: Irregular files aren't emptyTavian Barnes2020-02-143-2/+20
| | | | | GNU find's -empty returns false for devices, sockets, etc., even though their st_size is 0. Match that behaviour.
* time: Implement xtimegm() without mktime()Tavian Barnes2020-02-131-32/+99
| | | | Using setenv("TZ") is ugly and adds unnecessary failure paths.
* time: Split out time-related functions from utilTavian Barnes2020-02-139-278/+351
|
* parse: Handle 1969-12-31T23:59:59ZTavian Barnes2020-02-135-19/+66
| | | | | 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-125-20/+111
|
* 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-115-3/+261
|
* parse: Add a missing NULL check for trie_insert_mem()Tavian Barnes2020-01-221-0/+5
|
* README: Add FreeBSD install instructionsTavian Barnes2020-01-211-0/+3
|
* tests: Make test_xattr a sudo test in exactly the right casesTavian Barnes2020-01-141-11/+14
| | | | This was broken on GNU Hurd, for example.
* Release 1.5.21.5.2Tavian Barnes2020-01-095-6/+18
|