2015-06-05 11:30:55 (UTC-03:00)
Marcel Rodrigues <marcelgmr@gmail.com>
Show symbolic links with different color.
diff --git a/config.h b/config.h index e7bbd91..1d10ed0 100644 --- a/config.h +++ b/config.h @@ -35,6 +35,7 @@ #define RVC_STATUS CYAN #define RVC_BORDER BLUE #define RVC_SCROLLBAR CYAN +#define RVC_LINK CYAN #define RVC_FILE DEFAULT #define RVC_DIR DEFAULT #define RVC_HIDDEN YELLOW diff --git a/rover.c b/rover.c index 376bbb5..4e79093 100644 --- a/rover.c +++ b/rover.c @@ -47,6 +47,7 @@ typedef struct Row { char *name; off_t size; mode_t mode; + int islink; int marked; } Row; @@ -83,6 +84,7 @@ static struct Rover { #define ENAME(I) rover.rows[I].name #define ESIZE(I) rover.rows[I].size #define EMODE(I) rover.rows[I].mode +#define ISLINK(I) rover.rows[I].islink #define MARKED(I) rover.rows[I].marked #define SCROLL rover.scroll[rover.tab] #define ESEL rover.esel[rover.tab] @@ -341,7 +343,9 @@ update_view() isdir = S_ISDIR(EMODE(j)); if (j == ESEL) wattr_on(rover.window, A_REVERSE, NULL); - if (ishidden) + if (ISLINK(j)) + wcolor_set(rover.window, RVC_LINK, NULL); + else if (ishidden) wcolor_set(rover.window, RVC_HIDDEN, NULL); else if (isdir) wcolor_set(rover.window, RVC_DIR, NULL); @@ -456,6 +460,8 @@ ls(Row **rowsp, uint8_t flags) continue; if (!(flags & SHOW_HIDDEN) && ep->d_name[0] == '.') continue; + lstat(ep->d_name, &statbuf); + rows[i].islink = S_ISLNK(statbuf.st_mode); stat(ep->d_name, &statbuf); if (S_ISDIR(statbuf.st_mode)) { if (flags & SHOW_DIRS) {