diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2021-03-10 10:32:58 -0500 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2021-03-10 10:32:58 -0500 |
commit | 75950323dcf086e89e23e923fa1e2bd31f1c2f62 (patch) | |
tree | 447052f910b5ab638ad26ac2d7a8d7030368b4be /color.c | |
parent | f979df9ab11a2d7bbc6be15bd1f2734510bb4cb4 (diff) | |
download | bfs-75950323dcf086e89e23e923fa1e2bd31f1c2f62.tar.xz |
bftw: Fix bftw_type() for broken links and BFS_STAT_FOLLOW
This fixes link target coloring for broken links with -L.
Diffstat (limited to 'color.c')
-rw-r--r-- | color.c | 13 |
1 files changed, 5 insertions, 8 deletions
@@ -850,24 +850,21 @@ static int print_path(CFILE *cfile, const struct BFTW *ftwbuf) { /** Print a link target with the appropriate colors. */ static int print_link_target(CFILE *cfile, const struct BFTW *ftwbuf) { - int ret = -1; - const struct bfs_stat *statbuf = bftw_cached_stat(ftwbuf, BFS_STAT_NOFOLLOW); size_t len = statbuf ? statbuf->size : 0; char *target = xreadlinkat(ftwbuf->at_fd, ftwbuf->at_path, len); if (!target) { - goto done; + return -1; } - if (!cfile->colors) { + int ret; + if (cfile->colors) { + ret = print_path_colored(cfile, target, ftwbuf, BFS_STAT_FOLLOW); + } else { ret = dstrcat(&cfile->buffer, target); - goto done; } - ret = print_path_colored(cfile, target, ftwbuf, BFS_STAT_FOLLOW); - -done: free(target); return ret; } |