Commit Diff


commit - 15d7cd85a653b5bc67e16ace1d9c4ef4d3fc257e
commit + 2d11f8181b668445103f33bd092c97e9ef8e8ee6
blob - 63751dbd48892d0cacc6840151093544f7f9e578
blob + c809e31de76273efd645a82c2d0f3675598f5fcc
--- rover.c
+++ 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] == '/')