| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Otherwise the order doesn't match lexicographical order on bytes.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
$TTY is the actual TTY, e.g. /dev/pts/3, which may not be accessible by
the current user. This can happen e.g. if the PTY is owned by root, who
then does
root@host# su user
user@host$ ./tests/tests.sh
./tests/color.sh: line 81: /dev/pts/3: Permission denied
|
| |
|
|
|
|
|
|
|
| |
Bash 5 adds that special variable, which should be more reliable than
the awk trick, which is known to be broken on mawk.
Fixes: https://github.com/tavianator/bfs/issues/152
|
|
|
|
|
|
|
|
|
| |
This fixes -fstype on btrfs subvolumes, which previously reported
"unknown" due to their dev_t being potentially different from the mount
point.
Link: https://savannah.gnu.org/bugs/?50859
Link: https://lwn.net/Articles/866582/
|
|
|
|
|
|
|
|
| |
The test was Linux-only, and didn't pass on at least mips64el due to a
different signal mask size. The new version should be fully portable,
but will hang forever on failure.
Link: https://buildd.debian.org/status/fetch.php?pkg=bfs&arch=mips64el&ver=4.0.5-1&stamp=1737761227&raw=0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Valgrind does not deliver async signals in a timely manner; by default,
it polls for new signals every 1,000 basic blocks. That means we can
get SIGALRM delivered after timer_delete(), or kill(SIGSEGV) never
delivered after pause().
Fix the timer_delete() issue by reordering the cleanup path. Valgrind
always polls pending signals after pthread_sigmask(), so call that
between timer_delete() and sigunhook().
Fix the pause() issue by sleeping in a loop instead.
Note that --fair-sched=yes is required to avoid starvation of the
background thread.
Link: https://bugs.kde.org/show_bug.cgi?id=492678
Link: https://bugs.kde.org/show_bug.cgi?id=343357
Link: https://bugs.kde.org/show_bug.cgi?id=498936
|
| |
|
|
|
|
|
|
|
|
|
|
| |
macOS always fills in si_code for SIG{BUS,ILL,SEGV} as if it were a real
hardware fault, so returning from the handler is not guaranteed to re-
trigger the signal.
Fixes: aecdabb ("sighook: Return instead of re-raising for faults")
Link: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2386463/4/util/posix/signals_test.cc
Link: https://github.com/chromium/crashpad/commit/e0d8a0aa01ac176804077f1f128ccc894c098f79
|
| |
|
|
|
|
| |
Link: https://savannah.gnu.org/bugs/index.php?45930
|
| |
|
| |
|
|
|
|
|
| |
The new ioq_submit() function is now necessary to call to ensure the
pending request batch is flushed.
|
| |
|
|
|
|
|
| |
We might want to change the size of an allocated region without changing
which bytes are initialized.
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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")
|
|
|
|
| |
Fixes: https://github.com/tavianator/bfs/issues/145
|
|
|
|
| |
Link: https://savannah.gnu.org/bugs/?66365
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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")
|
| |
|
| |
|
|
|
|
|
|
|
| |
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)")
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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")
|
| |
|
|
|
|
|
|
|
| |
When optimizing -not \( -a , -b \), the child is a comma expression, not
the parent.
Fixes: 4a36bb9 ("expr: Make expressions variadic")
|
| |
|
|
|
|
|
|
| |
This replaces the explicit CPPFLAGS list in flags.mk with just
`-include src/prelude.h`, shortening our compiler command lines and
allowing them to be easily documented.
|
| |
|
|
|
|
|
| |
In most cases, it's not too annoying to specify a message. For
tests/bit.c, we can manually polyfill the 1-argument version.
|
| |
|
| |
|
| |
|
|
|
|
| |
clock_gettime() is available everywhere by now.
|
|
|
|
|
|
|
| |
POSIX 2024 clarified that find(1) is meant to work exactly like chmod(1)
here, so for modes like +rw,-x with no "who" specified, apply the umask.
Link: https://www.austingroupbugs.net/view.php?id=1392
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This reverts commit 4f80c17192f2b28c96a489969d4435151d68d0ce.
Link: https://www.austingroupbugs.net/view.php?id=1133
|