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");