summaryrefslogtreecommitdiffstats
path: root/src/color.c
Commit message (Collapse)AuthorAgeFilesLines
* color: Handle bfs_check_capabilities error code (-1) in cpath_has_capabilitiesJody Frankowski10 days1-1/+1
| | | | | | | | | | | 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")
* dstring: Add an infallible dstrshrink() functionTavian Barnes2024-10-171-2/+2
| | | | And mark the fallible ones with _nodiscard.
* color: Don't color files like directories on ENOTDIRTavian Barnes2024-10-161-114/+230
|
* color: Fix an infinite loop colorizing some invalid pathsTavian Barnes2024-10-131-8/+11
| | | | | | | | | | | | | | 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")
* Adjust in/out parameter docsTavian Barnes2024-10-101-1/+1
|
* color: Fix an assertion failure with embedded NUL bytesTavian Barnes2024-10-021-0/+10
| | | | | | | | | | | | | 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 commentsTavian Barnes2024-10-011-6/+6
|
* Fix spellingTavian Barnes2024-09-231-1/+1
|
* build: Move feature test macros to prelude.hTavian Barnes2024-08-281-1/+0
| | | | | | 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.
* prelude: Split bfs-specific utilities into new bfs.h headerTavian Barnes2024-08-281-0/+3
|
* expr: Tell expressions what kind of expression they areTavian Barnes2024-08-151-8/+14
|
* prelude: Simplify attributesTavian Barnes2024-07-281-2/+2
|
* color: Delay the case_sensitive decisionTavian Barnes2024-07-021-90/+84
|
* Use dstrx*() over dstrn*() when we know the exact lengthTavian Barnes2024-06-181-6/+6
|
* expr: New for_expr macroTavian Barnes2024-05-231-1/+1
|
* Stop using %mTavian Barnes2024-05-201-7/+0
|
* Cast AT_FDCWD to int for comparisonsTavian Barnes2024-05-171-1/+1
| | | | | Some platforms define AT_FDCWD to a constant like 0xFFFAFDCD that gets typed as an unsigned int.
* ctx: Try to reset TTY state when terminating abnormallyTavian Barnes2024-05-161-11/+37
| | | | Fixes: https://github.com/tavianator/bfs/issues/138
* Rename config.h to prelude.hTavian Barnes2024-04-191-1/+1
|
* color: New API to check if stat() is necessaryTavian Barnes2024-02-061-0/+5
|
* expr: Make expressions variadicTavian Barnes2024-01-071-21/+18
| | | | | | | | | 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.
* config: s/attr_format/attr_printf/Tavian Barnes2023-12-181-2/+2
|
* config: New variadic attr(...) macroTavian Barnes2023-12-181-2/+2
|
* color: Make sure errno is non-zero if parse_colors() failsTavian Barnes2023-11-281-43/+43
|
* config: s/BFS_FORMATTER/attr_format/Tavian Barnes2023-11-091-2/+2
|
* bfstd: Add a thread-safe wrapper for strerror()Tavian Barnes2023-10-051-1/+1
|
* Formatting fixesTavian Barnes2023-09-271-3/+3
|
* dstring: New dchar typedef for dynamic stringsTavian Barnes2023-09-261-3/+3
|
* Use the new list macrosTavian Barnes2023-09-251-1/+1
|
* trie: New trie_clear() functionTavian Barnes2023-08-311-2/+1
|
* color: Only highlight the trailing slash on ENOTDIRTavian Barnes2023-07-131-2/+4
|
* color: Don't break up leading and trailing dirsTavian Barnes2023-07-131-27/+32
|
* color: TTY-escape filenamesTavian Barnes2023-07-131-1/+9
|
* color: Get rid of EXT_MAXTavian Barnes2023-07-131-10/+30
|
* bfstd: Support wordesc() without allocatingTavian Barnes2023-07-131-13/+7
|
* diag: Shell-escape expression argumentsTavian Barnes2023-07-061-3/+3
|
* color: Don't print unnecessary reset sequencesTavian Barnes2023-06-301-24/+43
|
* color: Compare values too when deciding to smart-caseTavian Barnes2023-06-301-16/+65
|
* color: Implement smart casingTavian Barnes2023-06-291-219/+372
| | | | | | | | | Since coreutils 9.2, ls does case-sensitive extension matching if the same extension is capitalized differently in $LS_COLORS. Implement the same logic. Link: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=33123 Link: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=9086
* alloc: New header for memory allocation utilitiesTavian Barnes2023-06-201-2/+3
|
* color: New %pq formatter for shell-escaped stringsTavian Barnes2023-06-161-0/+18
|
* color: `fi=0` should not fall back to `no`Tavian Barnes2023-06-081-4/+4
|
* Switch from assert() to bfs_assert()/bfs_verify()Tavian Barnes2023-05-181-3/+2
|
* Use bfs_bug("...") over assert(!"...")Tavian Barnes2023-05-181-1/+2
|
* config: Provide <stdalign.h> and <stdbool.h>Tavian Barnes2023-05-111-1/+0
| | | | In anticipation of C23, since those headers won't be necessary any more.
* Replace license boilerplate with SPDX tagsTavian Barnes2023-01-251-15/+2
| | | | | | | And while I'm at it, remove years from copyright declarations. Link: https://spdx.dev/about/ Link: https://daniel.haxx.se/blog/2023/01/08/copyright-without-years/
* bfstd: New wrappers for dirname()/basename()Tavian Barnes2023-01-191-1/+1
|
* Add BFS_FORMATTER() to vprintf()-type functions tooTavian Barnes2022-12-081-0/+2
|
* expr: Rename bfs_expr_has_children() to _is_parent()Tavian Barnes2022-12-051-1/+1
|
* expr: Remove the singleton bfs_{true,false} expressionsTavian Barnes2022-11-301-0/+4
|