login

<     >

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) {