login

<     >

2016-06-04 10:13:30 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

Check errors while trying to go to link target.

diff --git a/rover.c b/rover.c
index 63751db..c809e31 100644
--- a/rover.c
+++ b/rover.c
@@ -1090,6 +1090,22 @@ main(int argc, char *argv[])
             ssize_t len = readlink(ENAME(ESEL), BUF1, BUFLEN-1);
             if (len == -1) continue;
             BUF1[len] = '\0';
+            if (access(BUF1, F_OK) == -1) {
+                char *msg;
+                switch (errno) {
+                case EACCES:
+                    msg = "Cannot access \"%s\".";
+                    break;
+                case ENOENT:
+                    msg = "\"%s\" does not exist.";
+                    break;
+                default:
+                    msg = "Cannot navigate to \"%s\".";
+                }
+                strcpy(BUF2, BUF1); /* message() uses BUF1. */
+                message(RED, msg, BUF2);
+                continue;
+            }
             realpath(BUF1, CWD);
             len = strlen(CWD);
             if (CWD[len - 1] == '/')