Currently dired mode doesn't use the adjustname() function early
enough when passed ~. For example typing 'M-x dired', then:

Dired: ~

Doesn't open your home directory. However, with this diff mg behaves
like emacs. 

ok?

mark

Index: dired.c
===================================================================
RCS file: /cvs/src/usr.bin/mg/dired.c,v
retrieving revision 1.56
diff -u -p -r1.56 dired.c
--- dired.c     29 May 2013 19:16:48 -0000      1.56
+++ dired.c     29 May 2013 19:38:33 -0000
@@ -754,11 +754,6 @@ dired_(char *dname)
        int              i;
        size_t           len;
 
-       if ((access(dname, R_OK | X_OK)) == -1) {
-               if (errno == EACCES)
-                       ewprintf("Permission denied");
-               return (NULL);
-       }
        if ((dname = adjustname(dname, FALSE)) == NULL) {
                ewprintf("Bad directory name");
                return (NULL);
@@ -768,6 +763,11 @@ dired_(char *dname)
        if (dname[len - 1] != '/') {
                dname[len++] = '/';
                dname[len] = '\0';
+       }
+       if ((access(dname, R_OK | X_OK)) == -1) {
+               if (errno == EACCES)
+                       ewprintf("Permission denied");
+               return (NULL);
        }
        if ((bp = findbuffer(dname)) == NULL) {
                ewprintf("Could not create buffer");

Reply via email to