Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | alloc: New for_arena() macro to iterate over allocated objects | Tavian Barnes | 2024-11-04 | 3 | -0/+166 |
| | |||||
* | alloc: Switch arenas from a freelist to a bitmap allocator | Tavian Barnes | 2024-11-04 | 2 | -90/+262 |
| | |||||
* | diag: New bfs_unreachable() and bfs_assume() macros | Tavian Barnes | 2024-11-04 | 1 | -0/+32 |
| | |||||
* | alloc: Don't require the old size in varena_realloc() | Tavian Barnes | 2024-11-02 | 8 | -43/+69 |
| | | | | Instead, just look up which arena contains the pointer. | ||||
* | sanity: Don't mark memory uninit in sanitize_{alloc,free}() | Tavian Barnes | 2024-11-02 | 3 | -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 ABIs | Tavian Barnes | 2024-11-02 | 3 | -22/+29 |
| | |||||
* | alloc: Add macro versions of alignment utils | Tavian Barnes | 2024-11-02 | 1 | -3/+12 |
| | |||||
* | trie: Fix varena_free() with wrong size | Tavian Barnes | 2024-11-02 | 1 | -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 == 0 | Tavian Barnes | 2024-11-02 | 5 | -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.4 | Tavian Barnes | 2024-10-31 | 3 | -2/+20 |
| | |||||
* | Merge pull request #146 from jody-frankowski/fix/capa-color-non-linux | Tavian Barnes | 2024-10-31 | 5 | -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_capabilities | Jody Frankowski | 2024-10-31 | 5 | -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 type | Tavian Barnes | 2024-10-27 | 2 | -9/+41 |
| | | | | Fixes: https://github.com/tavianator/bfs/issues/145 | ||||
* | tests/posix: Add a test for overly aggressive -exec {} + matching | Tavian Barnes | 2024-10-27 | 2 | -0/+33 |
| | | | | Link: https://savannah.gnu.org/bugs/?66365 | ||||
* | Merge pull request #144 from ryandesign/patch-1 | Tavian Barnes | 2024-10-26 | 1 | -1/+1 |
|\ | | | | | Fix typo in manpage | ||||
| * | Fix typo in manpage | Ryan Carsten Schmidt | 2024-10-26 | 1 | -1/+1 |
|/ | |||||
* | Release 4.0.34.0.3 | Tavian Barnes | 2024-10-22 | 3 | -2/+20 |
| | |||||
* | build: New make dist[sign] targets | Tavian Barnes | 2024-10-22 | 1 | -1/+11 |
| | |||||
* | dstring: Add an infallible dstrshrink() function | Tavian Barnes | 2024-10-17 | 4 | -9/+47 |
| | | | | And mark the fallible ones with _nodiscard. | ||||
* | color: Don't color files like directories on ENOTDIR | Tavian Barnes | 2024-10-16 | 2 | -116/+232 |
| | |||||
* | color: Fix an infinite loop colorizing some invalid paths | Tavian Barnes | 2024-10-13 | 3 | -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 %Y | Tavian Barnes | 2024-10-10 | 2 | -0/+18 |
| | |||||
* | tests/trie: Improve code coverage | Tavian Barnes | 2024-10-10 | 1 | -1/+4 |
| | |||||
* | sighook: Don't forget to reset list->tail on the last sigpop() | Tavian Barnes | 2024-10-10 | 2 | -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 updates | Tavian Barnes | 2024-10-10 | 1 | -36/+76 |
| | |||||
* | tests/sighook: Use the new xtimer_start() API | Tavian Barnes | 2024-10-10 | 1 | -8/+6 |
| | |||||
* | xtime: Add a wrapper for timer_create()/setitimer() | Tavian Barnes | 2024-10-10 | 4 | -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 docs | Tavian Barnes | 2024-10-10 | 5 | -11/+11 |
| | |||||
* | Fix some -Wundef-prefix warnings | Tavian Barnes | 2024-10-10 | 4 | -6/+14 |
| | |||||
* | trie: Switch the tag bits around | Tavian Barnes | 2024-10-08 | 1 | -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 checking | Tavian Barnes | 2024-10-08 | 1 | -13/+24 |
| | |||||
* | opt: Remove duplicate assignment in canonicalize_not() | Tavian Barnes | 2024-10-04 | 1 | -1/+0 |
| | |||||
* | color: Fix an assertion failure with embedded NUL bytes | Tavian Barnes | 2024-10-02 | 3 | -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 comments | Tavian Barnes | 2024-10-01 | 27 | -367/+367 |
| | |||||
* | ci: Group distcheck messages | Tavian Barnes | 2024-10-01 | 1 | -0/+2 |
| | |||||
* | build: Add -Wundef-prefix=BFS_ | Tavian Barnes | 2024-10-01 | 4 | -0/+22 |
| | |||||
* | list: Make SLIST_REMOVE() more type-safe | Tavian Barnes | 2024-09-30 | 1 | -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 spelling | Tavian Barnes | 2024-09-23 | 15 | -17/+17 |
| | |||||
* | list: New drain_slist() macro | Tavian Barnes | 2024-09-19 | 4 | -39/+49 |
| | |||||
* | build/prelude: Remove vestigal OBJS definition | Tavian Barnes | 2024-09-18 | 1 | -11/+0 |
| | |||||
* | Release 4.0.24.0.2 | Tavian Barnes | 2024-09-17 | 3 | -3/+37 |
| | |||||
* | opt: #include "xspawn.h" before #ifdef POSIX_SPAWN_SETRLIMIT | Tavian Barnes | 2024-09-17 | 1 | -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 Barnes | 2024-09-17 | 3 | -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 --version | Tavian Barnes | 2024-09-14 | 1 | -1/+32 |
| | |||||
* | dstring: New dstrepeat() function | Tavian Barnes | 2024-09-14 | 2 | -0/+22 |
| | |||||
* | build: Remove gen/deps.mk | Tavian Barnes | 2024-09-14 | 5 | -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 statement | Tavian Barnes | 2024-09-12 | 1 | -1/+1 |
| | | | | Fixes: 9b8cf46 ("opt: Warn about all ignored tests") | ||||
* | ci: Remove vmactions pip workaround | Tavian Barnes | 2024-09-08 | 1 | -10/+0 |
| | |||||
* | build/flags: Use auto-detection for all warning flags | Tavian Barnes | 2024-09-05 | 9 | -12/+73 |
| | |||||
* | docs/bfs.1: Fix some mandoc lint warnings | Tavian Barnes | 2024-09-05 | 3 | -12/+11 |
| | | | | And add mandoc -Tlint to make check-man. |