Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | tests/posix: Avoid catastrophic backtracking | Tavian Barnes | 2024-01-17 | 2 | -11/+2 |
| | | | | | | Using -path 'deep/*/*/.../*' to simulate -mindepth 18 falls off a performance cliff on systems that use backtracking for fnmatch(). This was observed on macOS 12.4. Instead, just use -type f. | ||||
* | xspawn: Check for _POSIX_SPAWN in bfs_spawn_addfchdir() | Tavian Barnes | 2024-01-17 | 1 | -1/+1 |
| | |||||
* | fsade: Mark bfs_acl_tag_type() as maybe_unused | Tavian Barnes | 2024-01-17 | 1 | -0/+1 |
| | | | | | It's not used on at least macOS, which doesn't have ACL_{USER,GROUP}_OBJ or ACL_OTHER. | ||||
* | tests: Properly filter escape sequences with --verbose=tests | Tavian Barnes | 2024-01-13 | 1 | -1/+1 |
| | |||||
* | ioq: Use the negative errno convention | Tavian Barnes | 2024-01-13 | 5 | -26/+33 |
| | |||||
* | bfstd: New {error,errno}_is_like() functions | Tavian Barnes | 2024-01-13 | 6 | -35/+45 |
| | | | | | | | 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. | ||||
* | tests.h: Add a header guard | Tavian Barnes | 2024-01-13 | 1 | -0/+5 |
| | |||||
* | tests: Merge unit test executables into one | Tavian Barnes | 2024-01-12 | 8 | -23/+166 |
| | |||||
* | tests: New output format | Tavian Barnes | 2024-01-11 | 1 | -13/+28 |
| | |||||
* | ci: Add an OmniOS builder | Tavian Barnes | 2024-01-09 | 1 | -0/+32 |
| | |||||
* | tests: Don't do chmod +s | Tavian Barnes | 2024-01-09 | 1 | -2/+3 |
| | | | | | | | | | | | | | | | | | | POSIX says > When using the symbolic mode form on a regular file, it is > implementation-defined whether or not: > > - Requests to set the set-user-ID-on-execution or set-group-ID-on- > execution bit when all execute bits are currently clear and none > are being set are ignored. And indeed, illumos ignores them with a warning: chmod: WARNING: /tmp/bfs.XXXX7KaGWb/rainbow/suid: Execute permission required for set-ID on execution Link: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html | ||||
* | config: Disable sys/acl.h on illumos | Tavian Barnes | 2024-01-09 | 1 | -1/+1 |
| | | | | | | Their ACL API is quite a bit different from most. Link: https://illumos.org/man/2/acl | ||||
* | build: Link with -lsocket -lnsl on illumos | Tavian Barnes | 2024-01-09 | 1 | -0/+4 |
| | | | | Link: https://illumos.org/man/3SOCKET/bind | ||||
* | build: Define _POSIX_PTHREAD_SEMANTICS for illumos | Tavian Barnes | 2024-01-09 | 1 | -0/+1 |
| | | | | | | Needed for the POSIX-compliant version of some interfaces. Link: https://illumos.org/man/3C/getpwnam | ||||
* | tests/bfs/D_opt: New test for more -D opt coverage | Tavian Barnes | 2024-01-07 | 2 | -0/+19 |
| | |||||
* | eval: Check for xbasename() allocation failure | Tavian Barnes | 2024-01-07 | 1 | -1/+8 |
| | |||||
* | expr: Make expressions variadic | Tavian Barnes | 2024-01-07 | 8 | -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() macros | Tavian Barnes | 2024-01-07 | 1 | -3/+40 |
| | |||||
* | ci: Add a DragonFly BSD job | Tavian Barnes | 2024-01-04 | 1 | -0/+31 |
| | |||||
* | Work around DragonFly BSD kernel bug | Tavian Barnes | 2024-01-04 | 2 | -1/+19 |
| | | | | | | | | | 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 BSD | Tavian Barnes | 2024-01-03 | 2 | -9/+49 |
| | |||||
* | config: Disable xattrs on DragonFly BSD | Tavian Barnes | 2024-01-03 | 1 | -1/+1 |
| | | | | DragonFly is missing extattr_get_link() and extattr_list_{file,link}(). | ||||
* | config: Check for GCC >= 11 before using malloc attribute args | Tavian Barnes | 2024-01-03 | 1 | -3/+3 |
| | |||||
* | ci: Add a NetBSD job | Tavian Barnes | 2024-01-03 | 1 | -1/+34 |
| | |||||
* | bit: Rename bswap{16,32,64}() | Tavian Barnes | 2024-01-03 | 1 | -16/+16 |
| | | | | | NetBSD already defines this in <sys/bswap.h>, so pick names that don't conflict. | ||||
* | tests/posix/name_bracket: Skip on NetBSD too | Tavian Barnes | 2024-01-03 | 1 | -2/+6 |
| | |||||
* | tests/bsd/type_w: Check for truncate(1) before using it | Tavian Barnes | 2024-01-03 | 1 | -1/+5 |
| | |||||
* | xspawn: Check for NetBSD 10 before using posix_spawn_..._fchdir() | Tavian Barnes | 2024-01-02 | 1 | -1/+1 |
| | |||||
* | config: Polyfill __NetBSD_Prereq__ | Tavian Barnes | 2024-01-02 | 1 | -0/+4 |
| | |||||
* | config: Don't use target_clones on NetBSD | Tavian Barnes | 2024-01-02 | 1 | -1/+1 |
| | |||||
* | ci: Add an OpenBSD job | Tavian Barnes | 2024-01-02 | 1 | -0/+30 |
| | |||||
* | pwcache: Fix uninitialized pointers on OpenBSD | Tavian Barnes | 2024-01-02 | 1 | -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 OpenBSD | Tavian Barnes | 2024-01-02 | 1 | -2/+8 |
| | |||||
* | ci: Use vmactions/freebsd-vm | Tavian Barnes | 2024-01-02 | 1 | -16/+21 |
| | |||||
* | ci: Update action and image versions | Tavian Barnes | 2024-01-01 | 3 | -12/+12 |
| | |||||
* | tests: Remove unneeded command -v unbuffer || skip | Tavian Barnes | 2024-01-01 | 2 | -4/+0 |
| | |||||
* | expr: Arena-allocate expressions | Tavian Barnes | 2023-12-20 | 6 | -301/+210 |
| | |||||
* | parse: s/parser_state/bfs_parser/ | Tavian Barnes | 2023-12-20 | 1 | -476/+476 |
| | |||||
* | opt: Use more standard terminology for data flow domains | Tavian Barnes | 2023-12-20 | 1 | -298/+294 |
| | |||||
* | expr: Move some implementation into expr.c | Tavian Barnes | 2023-12-20 | 3 | -45/+57 |
| | |||||
* | alloc: Add attr(nodiscard) to a few functions | Tavian Barnes | 2023-12-20 | 1 | -0/+4 |
| | |||||
* | config: Fix attr_nodiscard to use warn_unused_result | Tavian Barnes | 2023-12-20 | 1 | -2/+2 |
| | |||||
* | config: s/attr_format/attr_printf/ | Tavian Barnes | 2023-12-18 | 10 | -29/+29 |
| | |||||
* | config: New variadic attr(...) macro | Tavian Barnes | 2023-12-18 | 17 | -62/+127 |
| | |||||
* | docs: Rename HACKING to CONTRIBUTING | Tavian Barnes | 2023-12-16 | 3 | -8/+8 |
| | | | | So that GitHub recognizes it. | ||||
* | bfstd: New xwcwidth() wrapper | Tavian Barnes | 2023-12-16 | 3 | -2/+7 |
| | |||||
* | main: Warn if setlocale() fails | Tavian Barnes | 2023-12-16 | 1 | -1/+12 |
| | | | | This should help users understand why issues like #128 happen. | ||||
* | parse: Reject integers that start with whitespace | Tavian Barnes | 2023-12-09 | 2 | -1/+6 |
| | |||||
* | bfstd: Wrap is[w]{alpha,digit,...}() | Tavian Barnes | 2023-12-09 | 2 | -31/+62 |
| | |||||
* | Revert "README: Realign badges" | Tavian Barnes | 2023-11-28 | 1 | -3/+4 |
| | | | | | | Looks like GitHub fixed their rendering. This reverts commit 3f15559a82484d46942a68e18ba18c7e1c31aab3. |