summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* eval: Fix -D stat printed return valueTavian Barnes2024-06-031-1/+1
|
* parse: Allow -Darg/-Sarg as well as -D arg / -S argTavian Barnes2024-06-031-12/+20
|
* parse: Handle multiple flags at once like -LEXO2Tavian Barnes2024-06-031-26/+138
| | | | | | | | | | | | | | | | | | | | | The POSIX Utility Syntax Guidelines specify that flag groups like -HL should be handled like -H -L. GNU find doesn't support grouping flags in this way, but BSD find does. To avoid conflicts with non-flag primaries, for now we require at least one flag in a group to be a capital letter. That is, we support things like -Lds but not -ds. We also do not support -fPATH (without a space) as it would conflict with -follow, -fprint, etc. It is impossible to be compatible with both GNU and BSD find here: user@gnu$ find -follow link link/file ... user@bsd$ find -follow find: ollow: No such file or directory Link: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html
* sighook: Check that atomic size_t is lock-freeTavian Barnes2024-06-031-0/+4
|
* list: New SLIST_SPLICE() macroTavian Barnes2024-05-312-5/+21
|
* trie: Don't pass a bitfield directly to has_single_bit()Tavian Barnes2024-05-301-1/+1
|
* bit: Use <stdbit.h> if it exists, even without -std=c23Tavian Barnes2024-05-292-3/+7
| | | | glibc added an implementation in 2.39.
* bit: Update to match C23Tavian Barnes2024-05-291-51/+45
| | | | | | | | | | Based on the latest C23 draft (N3220): - Argument types to generic bit functions should be unsigned - Bit functions return unsigned int - Byte-swapping functions (stdc_memreverse8*()) weren't added - stdc_rotate_{left,right}() weren't added - first_leading_*() counts from the *left*
* Implement the remaining regex typesTavian Barnes2024-05-283-6/+71
| | | | Closes: https://github.com/tavianator/bfs/issues/21
* xregex: Support non-capturing groups with -regextype emacsTavian Barnes2024-05-271-1/+7
| | | | | Link: https://savannah.gnu.org/bugs/index.php?65770 Link: https://github.com/kkos/oniguruma/issues/296
* eval: Don't turn on NOKERNINFOTavian Barnes2024-05-271-95/+8
| | | | | Other utilities on FreeBSD like dd, sleep, etc. that respond to SIGINFO still print the kernel info line too.
* eval: Use a flag instead of a counter for SIGINFOTavian Barnes2024-05-271-16/+13
|
* bfstd: Treat ELOOP like ENOENTTavian Barnes2024-05-272-2/+2
| | | | | | | GNU findutils just made the same change, so looping symlinks will be considered broken rather than a hard error. Link: https://savannah.gnu.org/bugs/?51926
* eval: Print more information on filesystem loopsTavian Barnes2024-05-273-3/+17
|
* eval: Show/hide the bar on SIGINFO/SIGUSR1Tavian Barnes2024-05-251-1/+125
|
* bfstd: New helper for open(ctermid())Tavian Barnes2024-05-253-8/+21
|
* sighook: Allow sigunhook(NULL)Tavian Barnes2024-05-252-3/+5
|
* configure: Use --with/--without for librariesTavian Barnes2024-05-245-25/+25
|
* opt: Don't raise RLIMIT_NOFILE if it would prevent using posix_spawn()Tavian Barnes2024-05-234-0/+22
| | | | | | | | | | If we raise RLIMIT_NOFILE, we have to lower it before calling exec() for compatibility with select(). If posix_spawn() doesn't support that, we fall back to fork(), which is quite a bit slower. Therefore, if we're going to exec() on most files, it's better to keep RLIMIT_NOFILE the same to avoid the fork() cost, even though it makes bftw() somewhat slower.
* opt: true is true with probability 1, not 0Tavian Barnes2024-05-231-1/+1
|
* opt: Implement a general estimate_odds() functionTavian Barnes2024-05-231-9/+17
|
* expr: New for_expr macroTavian Barnes2024-05-236-14/+20
|
* prelude: Remove max_align_t polyfillTavian Barnes2024-05-201-15/+0
| | | | | | This has been fixed in Cosmopolitan. Link: https://github.com/jart/cosmopolitan/issues/944
* trie: Add some more target_clones wrappersTavian Barnes2024-05-201-2/+12
|
* prelude: Make sure to grab __GLIBC__Tavian Barnes2024-05-201-1/+2
|
* Stop using %mTavian Barnes2024-05-209-51/+32
|
* printf: The ' ' (space) flag must be numericTavian Barnes2024-05-191-1/+1
|
* dir: Use posix_getdents() on all platformsTavian Barnes2024-05-171-2/+6
|
* dir: Add support for posix_getdents()Tavian Barnes2024-05-171-4/+12
| | | | | | | | This will be added to the next POSIX standard, and is already implemented in musl. Link: https://www.austingroupbugs.net/view.php?id=697 Link: https://git.musl-libc.org/cgit/musl/commit/?id=1b0d48517f816e98f19111df82f32bfc1608ecec
* Cast AT_FDCWD to int for comparisonsTavian Barnes2024-05-175-7/+7
| | | | | Some platforms define AT_FDCWD to a constant like 0xFFFAFDCD that gets typed as an unsigned int.
* diag: New helpers to include xstrerror(errno) automaticallyTavian Barnes2024-05-175-6/+51
|
* stat: Support __st_birthtim on OpenBSDTavian Barnes2024-05-161-0/+3
|
* Work around https://github.com/llvm/llvm-project/issues/88163Tavian Barnes2024-05-164-3/+24
|
* ctx: Try to reset TTY state when terminating abnormallyTavian Barnes2024-05-163-51/+105
| | | | Fixes: https://github.com/tavianator/bfs/issues/138
* bar: Use atsigexit() to reset the barTavian Barnes2024-05-161-132/+47
|
* sighook: New utilities for hooking signalsTavian Barnes2024-05-163-0/+674
| | | | This allows multiple hooks to be installed for a single signal.
* atomic: Add a spin_loop() hintTavian Barnes2024-05-151-0/+14
|
* atomic: Add atomic_{thread,signal}_fence() wrappersTavian Barnes2024-05-151-0/+19
|
* xspawn: Mask signals before fork()Tavian Barnes2024-05-151-8/+29
| | | | This prevents signal handlers from running in the child before execve().
* bar: Make SIGWINCH move the cursor out of the barTavian Barnes2024-05-151-23/+16
|
* bar: Defend bfs_bar::fd against signal handler racesTavian Barnes2024-05-091-31/+102
| | | | | This is not currently a problem because bfs_bar_hide() is only ever called while single-threaded, but we might as well program defensively.
* dstring: Make dstrprintf() return dchar *Tavian Barnes2024-05-082-4/+4
|
* prelude: Kill #include <sys/param.h>Tavian Barnes2024-05-071-7/+0
| | | | We don't check for `BSD` anymore.
* build: Check for 1- and 2-argument getmntent() variantsTavian Barnes2024-05-071-2/+2
|
* build: Add a check for getmntinfo()Tavian Barnes2024-05-071-2/+1
|
* mtab: Fix getmntinfo() error checkTavian Barnes2024-05-071-1/+1
| | | | The man pages all say "if an error occurs, zero is returned"
* build: Add checks for strtofflags() and string_to_flags()Tavian Barnes2024-05-071-7/+9
|
* prelude: Remove unused __GLIBC_PREREQ() polyfillTavian Barnes2024-05-071-4/+0
|
* stat: Remove __GNU__ guardTavian Barnes2024-05-071-1/+1
| | | | | The number of people running bfs on Hurd with an outdated glibc version is vanishingly small (I hope).
* stat: Prefer fstat(fd) to fstatat(fd, "", AT_EMPTY_PATH)Tavian Barnes2024-05-071-19/+13
| | | | | | | | | This lets us get rid of the runtime probe for AT_EMPTY_PATH support, and should be more efficient anyway. We still use statx(fd, "", AT_EMPTY_PATH) if available. Link: https://lore.kernel.org/linux-fsdevel/CAHk-=wiYnnv7Kw7v+Cp2xU6_Fd-qxQMZuuxZ61LgA2=Gtftw-A@mail.gmail.com/