summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* alloc: New for_arena() macro to iterate over allocated objectsTavian Barnes2024-11-043-0/+166
|
* alloc: Switch arenas from a freelist to a bitmap allocatorTavian Barnes2024-11-042-90/+262
|
* diag: New bfs_unreachable() and bfs_assume() macrosTavian Barnes2024-11-041-0/+32
|
* alloc: Don't require the old size in varena_realloc()Tavian Barnes2024-11-028-43/+69
| | | | Instead, just look up which arena contains the pointer.
* sanity: Don't mark memory uninit in sanitize_{alloc,free}()Tavian Barnes2024-11-023-19/+45
| | | | | We might want to change the size of an allocated region without changing which bytes are initialized.
* alloc: Stop supporting pathological flexible array ABIsTavian Barnes2024-11-023-22/+29
|
* alloc: Add macro versions of alignment utilsTavian Barnes2024-11-021-3/+12
|
* trie: Fix varena_free() with wrong sizeTavian Barnes2024-11-021-8/+8
| | | | | | | In trie_remove(), clearing the bit before trie_node_collapse() causes us to free the old node with size 1 instead of 2, putting it on the wrong freelist. This is technically safe with the current arena implementation, but not intentional.
* alloc: Don't require size % align == 0Tavian Barnes2024-11-025-39/+27
| | | | | | | | | Allowing unaligned sizes will allow us to allocate aligned slabs with additional metadata in the tail without ballooning the allocation size for large alignments. Link: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_460 Link: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2072.htm
* Release 4.0.44.0.4Tavian Barnes2024-10-313-2/+20
|
* Merge pull request #146 from jody-frankowski/fix/capa-color-non-linuxTavian Barnes2024-10-315-1/+43
|\ | | | | Fix bfs coloring all files as if they had a capability, on non-Linux systems
| * color: Handle bfs_check_capabilities error code (-1) in cpath_has_capabilitiesJody Frankowski2024-10-315-1/+43
|/ | | | | | | | | | | On non-Linux systems, bfs_check_capabilities always returned -1, so cpath_has_capabilities would always return true. If bfs was called with an LS_COLORS containing the `ca` statement, e.g. `ca=30;41`, bfs would color ALL the files. While including the `ca` statement in LS_COLORS on non-Linux systems is unusual, this is not an error and is a valid use-case (e.g. Using GNU ls or lsd). Fixes: 1520d4d3 ("color: Don't color files like directories on ENOTDIR")
* bit: Add bswap() overloads for every primitive typeTavian Barnes2024-10-272-9/+41
| | | | Fixes: https://github.com/tavianator/bfs/issues/145
* tests/posix: Add a test for overly aggressive -exec {} + matchingTavian Barnes2024-10-272-0/+33
| | | | Link: https://savannah.gnu.org/bugs/?66365
* Merge pull request #144 from ryandesign/patch-1Tavian Barnes2024-10-261-1/+1
|\ | | | | Fix typo in manpage
| * Fix typo in manpageRyan Carsten Schmidt2024-10-261-1/+1
|/
* Release 4.0.34.0.3Tavian Barnes2024-10-223-2/+20
|
* build: New make dist[sign] targetsTavian Barnes2024-10-221-1/+11
|
* dstring: Add an infallible dstrshrink() functionTavian Barnes2024-10-174-9/+47
| | | | And mark the fallible ones with _nodiscard.
* color: Don't color files like directories on ENOTDIRTavian Barnes2024-10-162-116/+232
|
* color: Fix an infinite loop colorizing some invalid pathsTavian Barnes2024-10-133-8/+13
| | | | | | | | | | | | | | Previously, given $ touch file $ ln -s file/file notdir $ bfs notdir/file bfs would loop forever when printing the error message, since it expected stripping the trailing slash from "notdir/" to fix the ENOTDIR error, but the broken symlink still gave the same error. Fixes: b4c3201 ("color: Only highlight the trailing slash on ENOTDIR")
* tests/gnu: Test -L -printf %YTavian Barnes2024-10-102-0/+18
|
* tests/trie: Improve code coverageTavian Barnes2024-10-101-1/+4
|
* sighook: Don't forget to reset list->tail on the last sigpop()Tavian Barnes2024-10-102-0/+9
| | | | | | | This was causing a UAF if we ever unregistered the last hook for a signal and then re-registered one. Fixes: 75b7f70 ("sighook: Make sigunhook() O(1)")
* eval: Use xtimer_start() for status bar updatesTavian Barnes2024-10-101-36/+76
|
* tests/sighook: Use the new xtimer_start() APITavian Barnes2024-10-101-8/+6
|
* xtime: Add a wrapper for timer_create()/setitimer()Tavian Barnes2024-10-104-0/+130
| | | | | | setitimer() is obsolescent in POSIX 2008 and removed from POSIX 2024. However, at least macOS doesn't implement the new timer_create() API, so we still need the setitimer() fallback.
* Adjust in/out parameter docsTavian Barnes2024-10-105-11/+11
|
* Fix some -Wundef-prefix warningsTavian Barnes2024-10-104-6/+14
|
* trie: Switch the tag bits aroundTavian Barnes2024-10-081-31/+28
| | | | | | First of all, almost all checks were !trie_is_leaf(), so it makes sense to use trie_is_node() instead. Secondly, using the tag bit for internal nodes allows us to remove some NULL checks.
* trie: Add some extra bounds checkingTavian Barnes2024-10-081-13/+24
|
* opt: Remove duplicate assignment in canonicalize_not()Tavian Barnes2024-10-041-1/+0
|
* color: Fix an assertion failure with embedded NUL bytesTavian Barnes2024-10-023-0/+42
| | | | | | | | | | | | | Leading NUL bytes (e.g. `*\0.gz=...`) could cause us to insert a non-prefix-free set of strings into the case-insensitive extension trie, which would lead to crashes like bfs: trie_split@src/trie.c:538: Assertion failed: `key_nibble != rep_nibble` and OOB accesses to trie leaf keys. Fix it by ignoring those extensions, since filenames cannot contain NUL bytes. Fixes: 08030aea ("color: Delay the case_sensitive decision")
* Write @arg instead of @param arg in doc commentsTavian Barnes2024-10-0127-367/+367
|
* ci: Group distcheck messagesTavian Barnes2024-10-011-0/+2
|
* build: Add -Wundef-prefix=BFS_Tavian Barnes2024-10-014-0/+22
|
* list: Make SLIST_REMOVE() more type-safeTavian Barnes2024-09-301-25/+20
| | | | | | This avoids what might be a strict aliasing violation in some models. Link: https://github.com/llvm/llvm-project/pull/108385#issuecomment-2352938645
* Fix spellingTavian Barnes2024-09-2315-17/+17
|
* list: New drain_slist() macroTavian Barnes2024-09-194-39/+49
|
* build/prelude: Remove vestigal OBJS definitionTavian Barnes2024-09-181-11/+0
|
* Release 4.0.24.0.2Tavian Barnes2024-09-173-3/+37
|
* opt: #include "xspawn.h" before #ifdef POSIX_SPAWN_SETRLIMITTavian Barnes2024-09-171-0/+1
| | | | Fixes: 65a7814 ("opt: Don't raise RLIMIT_NOFILE if it would prevent using posix_spawn()")
* opt: Fix an invalid assertion in sink_not_comma()Tavian Barnes2024-09-173-4/+39
| | | | | | | When optimizing -not \( -a , -b \), the child is a comma expression, not the parent. Fixes: 4a36bb9 ("expr: Make expressions variadic")
* parse: Add a "logo" to bfs --versionTavian Barnes2024-09-141-1/+32
|
* dstring: New dstrepeat() functionTavian Barnes2024-09-142-0/+22
|
* build: Remove gen/deps.mkTavian Barnes2024-09-145-84/+68
| | | | | | | | | | | | | | | | Since commit 3552b79 ("build/flags: Infrastructure to detect compiler flag support"), this file only listed a bunch of lines like -include obj/src/alloc.d -include obj/src/bar.d ... We can do that just as well from the main Makefile, and in one line too: -include ${OBJS:.o=.d} This lets us pull the list of all objects out of build/prelude.mk and put it closer to where those objects are actually used.
* opt: Add missing newline to debug statementTavian Barnes2024-09-121-1/+1
| | | | Fixes: 9b8cf46 ("opt: Warn about all ignored tests")
* ci: Remove vmactions pip workaroundTavian Barnes2024-09-081-10/+0
|
* build/flags: Use auto-detection for all warning flagsTavian Barnes2024-09-059-12/+73
|
* docs/bfs.1: Fix some mandoc lint warningsTavian Barnes2024-09-053-12/+11
| | | | And add mandoc -Tlint to make check-man.