Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | parse: Handle multiple flags at once like -LEXO2 | Tavian Barnes | 2024-06-03 | 1 | -26/+138 |
| | | | | | | | | | | | | | | | | | | | | | The POSIX Utility Syntax Guidelines specify that flag groups like -HL should be handled like -H -L. GNU find doesn't support grouping flags in this way, but BSD find does. To avoid conflicts with non-flag primaries, for now we require at least one flag in a group to be a capital letter. That is, we support things like -Lds but not -ds. We also do not support -fPATH (without a space) as it would conflict with -follow, -fprint, etc. It is impossible to be compatible with both GNU and BSD find here: user@gnu$ find -follow link link/file ... user@bsd$ find -follow find: ollow: No such file or directory Link: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html | ||||
* | Implement the remaining regex types | Tavian Barnes | 2024-05-28 | 1 | -6/+26 |
| | | | | Closes: https://github.com/tavianator/bfs/issues/21 | ||||
* | configure: Use --with/--without for libraries | Tavian Barnes | 2024-05-24 | 1 | -2/+2 |
| | |||||
* | expr: New for_expr macro | Tavian Barnes | 2024-05-23 | 1 | -1/+1 |
| | |||||
* | Stop using %m | Tavian Barnes | 2024-05-20 | 1 | -7/+7 |
| | |||||
* | config: Check for struct tm::tm_gmtoff | Tavian Barnes | 2024-04-19 | 1 | -1/+1 |
| | |||||
* | Rename config.h to prelude.h | Tavian Barnes | 2024-04-19 | 1 | -1/+1 |
| | |||||
* | Implement -context | Tavian Barnes | 2024-04-10 | 1 | -48/+66 |
| | | | | Closes: https://github.com/tavianator/bfs/issues/27 | ||||
* | build: Add a separate configuration step | Tavian Barnes | 2024-04-09 | 1 | -1/+1 |
| | |||||
* | Implement -limit N | Tavian Barnes | 2024-03-20 | 1 | -1/+37 |
| | | | | Closes: https://github.com/tavianator/bfs/issues/133 | ||||
* | Re-run include-what-you-use | Tavian Barnes | 2024-03-11 | 1 | -2/+1 |
| | |||||
* | xtime: Call tzset() from main() instead of lazily | Tavian Barnes | 2024-03-07 | 1 | -6/+6 |
| | | | | | | | | | | | | | POSIX specifies[1] that If a thread accesses tzname, daylight, or timezone directly while another thread is in a call to tzset(), or to any function that is required or allowed to set timezone information as if by calling tzset(), the behavior is undefined. So calling it lazily from arbitrary threads is risky. [1]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tzset.html | ||||
* | sanity: Don't use self-init for uninit() | Tavian Barnes | 2024-02-12 | 1 | -4/+4 |
| | | | | | | | | | | | Self-initialization like bool ret = ret; is a GCC trick to suppress uninitialized variable warnings, but it's not actually well-defined, and will trip a recent enough MemorySanitizer: src/eval.c:1088:13: runtime error: load of value 128, which is not a valid value for type 'bool' | ||||
* | ctx: Fill in ctx->threads earlier | Tavian Barnes | 2024-02-06 | 1 | -4/+2 |
| | |||||
* | expr: Make expressions variadic | Tavian Barnes | 2024-01-07 | 1 | -48/+25 |
| | | | | | | | | | Rather than only unary/binary expressions, we now support an arbitrary number of children. The optimizer has been re-written almost completely and now supports optimal reordering of longer expression chains, rather than just arm-swapping. Fixes #85. | ||||
* | expr: Arena-allocate expressions | Tavian Barnes | 2023-12-20 | 1 | -208/+132 |
| | |||||
* | parse: s/parser_state/bfs_parser/ | Tavian Barnes | 2023-12-20 | 1 | -476/+476 |
| | |||||
* | expr: Move some implementation into expr.c | Tavian Barnes | 2023-12-20 | 1 | -45/+0 |
| | |||||
* | config: s/attr_format/attr_printf/ | Tavian Barnes | 2023-12-18 | 1 | -7/+7 |
| | |||||
* | config: New variadic attr(...) macro | Tavian Barnes | 2023-12-18 | 1 | -7/+7 |
| | |||||
* | parse: Reject integers that start with whitespace | Tavian Barnes | 2023-12-09 | 1 | -1/+5 |
| | |||||
* | ctx: Switch paths from darray to RESERVE() | Tavian Barnes | 2023-11-23 | 1 | -10/+10 |
| | |||||
* | config: s/BFS_FORMATTER/attr_format/ | Tavian Barnes | 2023-11-09 | 1 | -7/+7 |
| | |||||
* | parse: Reject -{exec,ok}dir if $PATH contains a relative path | Tavian Barnes | 2023-11-07 | 1 | -0/+26 |
| | | | | This matches the behaviour of GNU find. | ||||
* | Treat NO_COLOR="" the same as unset | Tavian Barnes | 2023-11-06 | 1 | -1/+2 |
| | | | | | | | | | | | | | | The docs say > Command-line software which adds ANSI color to its output by default > should check for a NO_COLOR environment variable that, when present > and not an empty string (regardless of its value), prevents the > addition of ANSI color. but we were not checking for the empty string. Link: https://no-color.org/ Link: https://github.com/sharkdp/fd/pull/1421 | ||||
* | bfstd: New xwaitpid() wrapper | Tavian Barnes | 2023-10-31 | 1 | -1/+1 |
| | |||||
* | parse: Set BFTW_WHITEOUTS when parsing -type w | Tavian Barnes | 2023-10-17 | 1 | -0/+3 |
| | |||||
* | bfstd: Add a thread-safe wrapper for strerror() | Tavian Barnes | 2023-10-05 | 1 | -2/+2 |
| | |||||
* | Formatting fixes | Tavian Barnes | 2023-09-27 | 1 | -23/+22 |
| | |||||
* | parse: Give more ephemeral_fds to -no{user,group} | Tavian Barnes | 2023-09-12 | 1 | -7/+9 |
| | | | | | | | | Fewer than 3 can lead to Assertion failed: (retval->write_queue != -1), function __open_cached_connection, file /usr/src/lib/libc/net/nscachedcli.c, line 224. on a FreeBSD system with LDAP accounts. | ||||
* | Work around https://github.com/llvm/llvm-project/issues/64946 | Tavian Barnes | 2023-08-23 | 1 | -0/+3 |
| | |||||
* | parse: Allow -files0-from an empty set of paths | Tavian Barnes | 2023-08-14 | 1 | -10/+3 |
| | | | | This follows a behaviour change in GNU findutils 4.9.0. | ||||
* | parse: Reject -j0 | Tavian Barnes | 2023-07-12 | 1 | -1/+9 |
| | |||||
* | Use strcmp() instead of fnmatch() if possible | Tavian Barnes | 2023-07-06 | 1 | -5/+12 |
| | |||||
* | parse: Warn about errors parsing $LS_COLORS | Tavian Barnes | 2023-06-29 | 1 | -1/+5 |
| | |||||
* | Unify macro naming conventions | Tavian Barnes | 2023-06-24 | 1 | -2/+2 |
| | | | | | In particular, macros that decide whether to use a particular API/ dependency should be spelled BFS_USE_*, and should be configurable. | ||||
* | alloc: New header for memory allocation utilities | Tavian Barnes | 2023-06-20 | 1 | -25/+3 |
| | |||||
* | bfstd: New xmemdup() function | Tavian Barnes | 2023-06-20 | 1 | -5/+2 |
| | |||||
* | parse: Shell-escape arguments in diagnostics | Tavian Barnes | 2023-06-16 | 1 | -6/+6 |
| | |||||
* | parse: Don't default to depth-first when argv[0] is "find" | Tavian Barnes | 2023-06-14 | 1 | -6/+0 |
| | |||||
* | bftw: Use an I/O queue to open directories | Tavian Barnes | 2023-06-13 | 1 | -1/+25 |
| | | | | Parallelism is controlled by the new -j flag. | ||||
* | sanity: Add wrappers for sanitizer interfaces | Tavian Barnes | 2023-05-25 | 1 | -0/+1 |
| | |||||
* | Switch from assert() to bfs_assert()/bfs_verify() | Tavian Barnes | 2023-05-18 | 1 | -4/+3 |
| | |||||
* | Use bfs_bug("...") over assert(!"...") | Tavian Barnes | 2023-05-18 | 1 | -2/+2 |
| | |||||
* | config: Provide <stdalign.h> and <stdbool.h> | Tavian Barnes | 2023-05-11 | 1 | -1/+0 |
| | | | | In anticipation of C23, since those headers won't be necessary any more. | ||||
* | config: s/BFS_FALLTHROUGH/fallthru/ | Tavian Barnes | 2023-05-10 | 1 | -9/+9 |
| | |||||
* | config: s/BFS_UNINIT/uninit/ | Tavian Barnes | 2023-05-10 | 1 | -4/+4 |
| | |||||
* | config: Hoist the assignment outside of BFS_UNINIT() | Tavian Barnes | 2023-05-08 | 1 | -4/+4 |
| | |||||
* | Replace license boilerplate with SPDX tags | Tavian Barnes | 2023-01-25 | 1 | -15/+2 |
| | | | | | | | And while I'm at it, remove years from copyright declarations. Link: https://spdx.dev/about/ Link: https://daniel.haxx.se/blog/2023/01/08/copyright-without-years/ | ||||
* | opt: Move probabilities out of the parser | Tavian Barnes | 2023-01-24 | 1 | -120/+29 |
| |