Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | tests.sh: Use eval instead of declare -g | Tavian Barnes | 2017-04-08 | 1 | -1/+1 |
| | | | | Turns out declare -g is from Bash 4 too. | ||||
* | Move bftw_typeflag converters to util.c | Tavian Barnes | 2017-04-08 | 6 | -116/+112 |
| | |||||
* | bftw: Only rebuild the part of the path that changes | Tavian Barnes | 2017-03-22 | 1 | -37/+50 |
| | | | | | | | | | | | | | | Quadratic complexity is still possible for directory structures like root -- a -- a -- a -- a ... | +- b -- b -- b -- b ... But for most realistic directory structures, bfs should now spend less time building paths. (Of course if you print every path, overall complexity is quadratic anyway.) | ||||
* | bftw: Fix quadratic reference counting complexity | Tavian Barnes | 2017-03-20 | 1 | -8/+15 |
| | | | | | | | | | | | | | dircache_entry refcounts used to count every single descendant, resulting in n refcount updates to create/delete an entry at depth n, and thus O(n^2) complexity overall for deep directory structures. Fix it by only counting direct children instead. The cache eviction policy is changed to prefer shallower entries in all cases, attempting to save at least some of the benefit of the previous accounting scheme. Unfortunately, the average number of traversed components for openat() calls still went up by ~20%, but the performance in practice is roughly unchanged in my tests. | ||||
* | Respect -nocolor for -fprint /dev/stdout | Tavian Barnes | 2017-03-16 | 1 | -2/+16 |
| | |||||
* | Color link targets for -ls | Tavian Barnes | 2017-03-16 | 6 | -26/+60 |
| | | | | Fixes #18. | ||||
* | Give struct expr a CFILE* instead of just a FILE* | Tavian Barnes | 2017-03-16 | 5 | -58/+90 |
| | | | | This unifies the behaviour of -print and -fprint /dev/stdout. | ||||
* | Release 0.960.96 | Tavian Barnes | 2017-03-11 | 3 | -2/+20 |
| | |||||
* | Implement -ls and -fls | Tavian Barnes | 2017-03-11 | 6 | -102/+291 |
| | |||||
* | tests: Run everything in UTC | Tavian Barnes | 2017-03-11 | 2 | -4/+5 |
| | |||||
* | Add a test for colored output | Tavian Barnes | 2017-03-11 | 2 | -0/+15 |
| | |||||
* | Make a printf()-style API for colored messages | Tavian Barnes | 2017-03-11 | 8 | -322/+306 |
| | |||||
* | Implement -printf %Ak, %Ck, and %Tk | Tavian Barnes | 2017-03-11 | 3 | -90/+240 |
| | |||||
* | tests: Print the count of passing and failing tests | Tavian Barnes | 2017-02-11 | 1 | -13/+14 |
| | |||||
* | Add some tests for the operators themselves | Tavian Barnes | 2017-02-11 | 9 | -10/+118 |
| | |||||
* | Allow short-circuiting optimizations with non-pure operands | Tavian Barnes | 2017-02-11 | 2 | -14/+42 |
| | |||||
* | Add tests for bfs's flexible command line parsing | Tavian Barnes | 2017-02-10 | 6 | -0/+35 |
| | |||||
* | tests: Don't require bash associative arrays | Tavian Barnes | 2017-02-10 | 1 | -22/+11 |
| | | | | That's a bash 4 feature, while macOS is stuck on bash 3. | ||||
* | bftw: Make the nameoff of "///" point to "/" | Tavian Barnes | 2017-02-09 | 6 | -11/+14 |
| | | | | This simplifies a few things such as -name handling for ///. | ||||
* | Give the test cases human-readable names | Tavian Barnes | 2017-02-09 | 138 | -312/+452 |
| | |||||
* | Don't close stdin for -ok or -okdir | Tavian Barnes | 2017-02-09 | 4 | -15/+45 |
| | | | | Turns out it violates POSIX, even though GNU find does it. | ||||
* | parse: Factor out all "looks like icmp" checks | Tavian Barnes | 2017-02-09 | 1 | -11/+16 |
| | |||||
* | bftw: Add the DIR* to bftw_state | Tavian Barnes | 2017-02-09 | 1 | -15/+39 |
| | | | | Can't forget to close it that way. | ||||
* | Add support for -x?type with multiple types | Tavian Barnes | 2017-02-08 | 8 | -169/+146 |
| | | | | This functionality is already part of GNU findutils git. | ||||
* | bftw: Add mising closedir() to error path | Tavian Barnes | 2017-02-07 | 1 | -0/+1 |
| | |||||
* | Bail out if parse_root() fails | Tavian Barnes | 2017-02-07 | 1 | -44/+88 |
| | | | | | | Previously, skip_paths() did not distinguish between end-of-arguments and parse_root() failing, returning NULL in both cases. If parse_root() failed, parsing would attempt to continue, in an unexpected state. | ||||
* | Add some missing perror() calls | Tavian Barnes | 2017-02-07 | 3 | -34/+39 |
| | |||||
* | bftw: Plug a leak if dirqueue_push() fails | Tavian Barnes | 2017-02-06 | 1 | -16/+28 |
| | | | | | | | | | | If bftw_add() succeeds but dirqueue_push() fails, we need to clean up the just-added dircache_entry. Otherwise it will leak, and we'll also fail the cache->size == 0 assertion. Fix it by extracting the dircache-related parts of bftw_pop() into a new helper function bftw_gc(), and call it from bftw_pop() as well as the bftw_push() failure path. | ||||
* | Fix a memory leak parsing -printf | Tavian Barnes | 2017-02-06 | 3 | -1/+9 |
| | |||||
* | tests.sh: Set the umask before creating the test trees | Tavian Barnes | 2017-02-06 | 1 | -0/+1 |
| | |||||
* | Make -quit happen immediately, not at the end of the current expression | Tavian Barnes | 2017-02-05 | 4 | -4/+43 |
| | |||||
* | bftw: Compute nameoff correctly for the root in BFTW_DEPTH mode | Tavian Barnes | 2017-02-05 | 3 | -2/+11 |
| | |||||
* | Implement -printf/-fprintf | Tavian Barnes | 2017-02-05 | 17 | -46/+1087 |
| | | | | | Based on a patch by Fangrui Song <i@maskray.me>. Closes #16. | ||||
* | Implement -nouser and -nogroup | Tavian Barnes | 2017-02-04 | 6 | -1/+62 |
| | |||||
* | Don't trust st_size when reading symlinks | Tavian Barnes | 2017-01-31 | 3 | -12/+44 |
| | | | | | Linux /proc, for example, reports a st_size of 0 for everything. It's nice to be able to use -lname on them anyway. | ||||
* | Simplify exec_chdir() | Tavian Barnes | 2017-01-14 | 1 | -16/+10 |
| | | | | | | The previous code recomputed the name offset for no reason, and had an embarrassing typo that was hypothetically a bug (`} if` instead of `} else if`). | ||||
* | Don't set _POSIX_C_SOURCE | Tavian Barnes | 2017-01-06 | 1 | -5/+4 |
| | | | | | | The BSD behaviour is to hide all BSD extensions if standard-conformance feature test macros are present. We don't want strict POSIX, we want all available extensions, so ask for that. | ||||
* | tests: Add a test for -inum | Tavian Barnes | 2017-01-03 | 2 | -1/+9 |
| | |||||
* | tests: Add tests for -quit | Tavian Barnes | 2017-01-02 | 5 | -1/+27 |
| | |||||
* | eval: Check that O_DIRECTORY is defined before using it | Tavian Barnes | 2017-01-02 | 1 | -1/+5 |
| | |||||
* | travis: Do 32-bit builds too | Tavian Barnes | 2016-12-21 | 1 | -2/+13 |
| | |||||
* | Set _FILE_OFFSET_BITS to 64 | Tavian Barnes | 2016-12-21 | 3 | -1/+8 |
| | | | | | With the new support for -size n[TP], this is needed to avoid overflow on 32-bit platforms. | ||||
* | Bump the version to 0.880.88 | Tavian Barnes | 2016-12-20 | 3 | -2/+19 |
| | |||||
* | Add some text to the -help output | Tavian Barnes | 2016-12-20 | 1 | -1/+27 |
| | |||||
* | Implement -mnewer | Tavian Barnes | 2016-12-20 | 4 | -1/+20 |
| | |||||
* | Add tera and peta suffices for -size | Tavian Barnes | 2016-12-20 | 3 | -3/+15 |
| | |||||
* | Implement -sparse from FreeBSD find | Tavian Barnes | 2016-12-20 | 3 | -0/+22 |
| | |||||
* | Support -[gu]id NAME like BSD find | Tavian Barnes | 2016-12-20 | 4 | -25/+59 |
| | |||||
* | Don't check errno after get{gr,pw}nam() | Tavian Barnes | 2016-12-20 | 1 | -24/+6 |
| | | | | | Turns out it doesn't always keep errno 0, even if the only problem is a failed lookup. This was observed on a machine with Kerberos auth. | ||||
* | Implement BSD find's -depth N | Tavian Barnes | 2016-12-18 | 10 | -2/+95 |
| |