summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* bfstd: New {error,errno}_is_like() functionsTavian Barnes2024-01-135-21/+42
| | | | | | | We used to have is_nonexistence_error() to consistently treat ENOENT and ENOTDIR the same. Recently, we started considering EFAULT the same as ENAMETOOLONG on DragonFly BSD to work around a kernel bug. Unify both of these behind a more generic interface.
* config: Disable sys/acl.h on illumosTavian Barnes2024-01-091-1/+1
| | | | | | Their ACL API is quite a bit different from most. Link: https://illumos.org/man/2/acl
* eval: Check for xbasename() allocation failureTavian Barnes2024-01-071-1/+8
|
* expr: Make expressions variadicTavian Barnes2024-01-078-890/+1719
| | | | | | | | | 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.
* list: New SLIST_HEAD() and SLIST_TAIL() macrosTavian Barnes2024-01-071-3/+40
|
* Work around DragonFly BSD kernel bugTavian Barnes2024-01-041-1/+13
| | | | | | | | | DragonFly's x86_64 assembly implementation of copyinstr() checks the wrong pointer when deciding whether to return EFAULT or ENAMETOOLONG, causing it to always return EFAULT for overlong paths. Work around it by treating EFAULT the same as ENAMETOOLONG on DragonFly. Link: https://twitter.com/tavianator/status/1742991411203485713
* fsade: Fix ACL checks on DragonFly BSDTavian Barnes2024-01-031-9/+45
|
* config: Disable xattrs on DragonFly BSDTavian Barnes2024-01-031-1/+1
| | | | DragonFly is missing extattr_get_link() and extattr_list_{file,link}().
* config: Check for GCC >= 11 before using malloc attribute argsTavian Barnes2024-01-031-3/+3
|
* bit: Rename bswap{16,32,64}()Tavian Barnes2024-01-031-16/+16
| | | | | NetBSD already defines this in <sys/bswap.h>, so pick names that don't conflict.
* xspawn: Check for NetBSD 10 before using posix_spawn_..._fchdir()Tavian Barnes2024-01-021-1/+1
|
* config: Polyfill __NetBSD_Prereq__Tavian Barnes2024-01-021-0/+4
|
* config: Don't use target_clones on NetBSDTavian Barnes2024-01-021-1/+1
|
* pwcache: Fix uninitialized pointers on OpenBSDTavian Barnes2024-01-021-4/+4
| | | | | | | | | | | | | POSIX specifies that the get{pw,gr}*_r() functions store a NULL pointer to *result on error. However, OpenBSD does not always do this[1][2]: > if (bufsize < GETGR_R_SIZE_MAX) > return ERANGE; Work around it by explicitly initializing ret to NULL. [1]: https://github.com/openbsd/src/blob/e4829a9cc666f01ca5062d7fc15c20ab2d69229e/lib/libc/gen/getgrent.c#L135-L136 [2]: https://github.com/openbsd/src/blob/e4829a9cc666f01ca5062d7fc15c20ab2d69229e/lib/libc/gen/getgrent.c#L183-L184
* bfstd: Fix fflags type on OpenBSDTavian Barnes2024-01-021-2/+8
|
* expr: Arena-allocate expressionsTavian Barnes2023-12-206-301/+210
|
* parse: s/parser_state/bfs_parser/Tavian Barnes2023-12-201-476/+476
|
* opt: Use more standard terminology for data flow domainsTavian Barnes2023-12-201-298/+294
|
* expr: Move some implementation into expr.cTavian Barnes2023-12-202-45/+56
|
* alloc: Add attr(nodiscard) to a few functionsTavian Barnes2023-12-201-0/+4
|
* config: Fix attr_nodiscard to use warn_unused_resultTavian Barnes2023-12-201-2/+2
|
* config: s/attr_format/attr_printf/Tavian Barnes2023-12-1810-29/+29
|
* config: New variadic attr(...) macroTavian Barnes2023-12-1817-62/+127
|
* bfstd: New xwcwidth() wrapperTavian Barnes2023-12-163-2/+7
|
* main: Warn if setlocale() failsTavian Barnes2023-12-161-1/+12
| | | | This should help users understand why issues like #128 happen.
* parse: Reject integers that start with whitespaceTavian Barnes2023-12-091-1/+5
|
* bfstd: Wrap is[w]{alpha,digit,...}()Tavian Barnes2023-12-092-31/+62
|
* color: Make sure errno is non-zero if parse_colors() failsTavian Barnes2023-11-281-43/+43
|
* bfstd: Work around more instances of llvm/llvm-project#65532Tavian Barnes2023-11-231-14/+19
|
* darray: RemoveTavian Barnes2023-11-233-188/+0
| | | | | The new RESERVE() macro from alloc.h is nicer, and handles alignment properly.
* printf: Switch from darray to RESERVE()Tavian Barnes2023-11-231-175/+195
|
* mtab: Switch from darray to RESERVE()Tavian Barnes2023-11-231-23/+23
|
* ctx: Switch paths from darray to RESERVE()Tavian Barnes2023-11-234-15/+16
|
* alloc: New helpers for growing dynamic arraysTavian Barnes2023-11-232-22/+80
|
* exec: Use the new REALLOC_ARRAY() macroTavian Barnes2023-11-231-1/+1
|
* dstring: Use the new REALLOC_FLEX() macroTavian Barnes2023-11-232-51/+65
| | | | | | While I'm at it, switch the capacity to include the NUL byte, so that it could be used by __counted_by() for example. And fix a theoretical provenance issue.
* alloc: New helpers for aligned reallocationTavian Barnes2023-11-232-4/+62
| | | | | | There is no aligned_realloc(), so the new xrealloc() function emulates it by manually reallocating and copying for over-aligned types. The new REALLOC_ARRAY() and REALLOC_FLEX() macros wrap xrealloc().
* alloc: New ALLOC_MAX macroTavian Barnes2023-11-231-2/+10
|
* alloc: New is_aligned() helperTavian Barnes2023-11-232-5/+10
|
* bftw: Add some whitespace to struct bftw_argsTavian Barnes2023-11-231-0/+4
|
* xspawn: Detect posix_spawn() supportTavian Barnes2023-11-192-10/+38
|
* ioq: Don't crash on allocation failuresTavian Barnes2023-11-151-0/+4
|
* config: New attr_maybe_unused macroTavian Barnes2023-11-154-7/+19
|
* xspawn: API tweaksTavian Barnes2023-11-153-43/+48
|
* bit: Implement a branchless has_single_bit()Tavian Barnes2023-11-131-1/+2
|
* eval: Remove Cosmopolitan-specific workaroundTavian Barnes2023-11-131-3/+1
| | | | | | | Turns out this is not specific to Cosmopolitan, it's a recent Linux behaviour change. Link: https://lore.kernel.org/linux-fsdevel/20231113180616.2831430-1-tavianator@tavianator.com/
* Revert "bit: Implement a branchless has_single_bit()"Tavian Barnes2023-11-111-2/+1
| | | | | | Doesn't work for the highest bit due to overflow. This reverts commit 208376ef99da243545efcd6fb02d3469b4c068ed.
* Initial support for Cosmopolitan LibcTavian Barnes2023-11-105-3/+33
|
* exec: Don't do setrlimit() in the parentTavian Barnes2023-11-101-22/+4
| | | | | | | | | This was hacky, but it's also broken because it can make posix_spawn() fail with EMFILE, as happens on at least musl. Fixes: 7d69fef6a0b80ad57acde7bac8a22b83531fec0d Link: https://www.austingroupbugs.net/view.php?id=603 Link: https://sourceware.org/bugzilla/show_bug.cgi?id=31049
* bit: Implement a branchless has_single_bit()Tavian Barnes2023-11-101-1/+2
|