summaryrefslogtreecommitdiffstats
path: root/src/parse.c
Commit message (Collapse)AuthorAgeFilesLines
* parse: Handle multiple flags at once like -LEXO2Tavian Barnes2024-06-031-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 typesTavian Barnes2024-05-281-6/+26
| | | | Closes: https://github.com/tavianator/bfs/issues/21
* configure: Use --with/--without for librariesTavian Barnes2024-05-241-2/+2
|
* expr: New for_expr macroTavian Barnes2024-05-231-1/+1
|
* Stop using %mTavian Barnes2024-05-201-7/+7
|
* config: Check for struct tm::tm_gmtoffTavian Barnes2024-04-191-1/+1
|
* Rename config.h to prelude.hTavian Barnes2024-04-191-1/+1
|
* Implement -contextTavian Barnes2024-04-101-48/+66
| | | | Closes: https://github.com/tavianator/bfs/issues/27
* build: Add a separate configuration stepTavian Barnes2024-04-091-1/+1
|
* Implement -limit NTavian Barnes2024-03-201-1/+37
| | | | Closes: https://github.com/tavianator/bfs/issues/133
* Re-run include-what-you-useTavian Barnes2024-03-111-2/+1
|
* xtime: Call tzset() from main() instead of lazilyTavian Barnes2024-03-071-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 Barnes2024-02-121-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 earlierTavian Barnes2024-02-061-4/+2
|
* expr: Make expressions variadicTavian Barnes2024-01-071-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 expressionsTavian Barnes2023-12-201-208/+132
|
* parse: s/parser_state/bfs_parser/Tavian Barnes2023-12-201-476/+476
|
* expr: Move some implementation into expr.cTavian Barnes2023-12-201-45/+0
|
* config: s/attr_format/attr_printf/Tavian Barnes2023-12-181-7/+7
|
* config: New variadic attr(...) macroTavian Barnes2023-12-181-7/+7
|
* parse: Reject integers that start with whitespaceTavian Barnes2023-12-091-1/+5
|
* ctx: Switch paths from darray to RESERVE()Tavian Barnes2023-11-231-10/+10
|
* config: s/BFS_FORMATTER/attr_format/Tavian Barnes2023-11-091-7/+7
|
* parse: Reject -{exec,ok}dir if $PATH contains a relative pathTavian Barnes2023-11-071-0/+26
| | | | This matches the behaviour of GNU find.
* Treat NO_COLOR="" the same as unsetTavian Barnes2023-11-061-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() wrapperTavian Barnes2023-10-311-1/+1
|
* parse: Set BFTW_WHITEOUTS when parsing -type wTavian Barnes2023-10-171-0/+3
|
* bfstd: Add a thread-safe wrapper for strerror()Tavian Barnes2023-10-051-2/+2
|
* Formatting fixesTavian Barnes2023-09-271-23/+22
|
* parse: Give more ephemeral_fds to -no{user,group}Tavian Barnes2023-09-121-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/64946Tavian Barnes2023-08-231-0/+3
|
* parse: Allow -files0-from an empty set of pathsTavian Barnes2023-08-141-10/+3
| | | | This follows a behaviour change in GNU findutils 4.9.0.
* parse: Reject -j0Tavian Barnes2023-07-121-1/+9
|
* Use strcmp() instead of fnmatch() if possibleTavian Barnes2023-07-061-5/+12
|
* parse: Warn about errors parsing $LS_COLORSTavian Barnes2023-06-291-1/+5
|
* Unify macro naming conventionsTavian Barnes2023-06-241-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 utilitiesTavian Barnes2023-06-201-25/+3
|
* bfstd: New xmemdup() functionTavian Barnes2023-06-201-5/+2
|
* parse: Shell-escape arguments in diagnosticsTavian Barnes2023-06-161-6/+6
|
* parse: Don't default to depth-first when argv[0] is "find"Tavian Barnes2023-06-141-6/+0
|
* bftw: Use an I/O queue to open directoriesTavian Barnes2023-06-131-1/+25
| | | | Parallelism is controlled by the new -j flag.
* sanity: Add wrappers for sanitizer interfacesTavian Barnes2023-05-251-0/+1
|
* Switch from assert() to bfs_assert()/bfs_verify()Tavian Barnes2023-05-181-4/+3
|
* Use bfs_bug("...") over assert(!"...")Tavian Barnes2023-05-181-2/+2
|
* config: Provide <stdalign.h> and <stdbool.h>Tavian Barnes2023-05-111-1/+0
| | | | In anticipation of C23, since those headers won't be necessary any more.
* config: s/BFS_FALLTHROUGH/fallthru/Tavian Barnes2023-05-101-9/+9
|
* config: s/BFS_UNINIT/uninit/Tavian Barnes2023-05-101-4/+4
|
* config: Hoist the assignment outside of BFS_UNINIT()Tavian Barnes2023-05-081-4/+4
|
* Replace license boilerplate with SPDX tagsTavian Barnes2023-01-251-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 parserTavian Barnes2023-01-241-120/+29
|