diff --git a/NEWS b/NEWS
index 223c39321..166541c44 100644
--- a/NEWS
+++ b/NEWS
@@ -5,7 +5,7 @@ ver 0.16.6 (2010/??/??)
   - flac, null, wave: fix buffer corruption bug
   - wave: support packed 24 bit samples
 * mapper: fix the bogus "not a directory" error message
-* mapper: check "x" permission on music directory
+* mapper: check "x" and "r" permissions on music directory
 * log: print reason for failure
 * event_pipe: fix WIN32 regression
 * define WINVER in ./configure
diff --git a/src/mapper.c b/src/mapper.c
index 41ed6550b..3cee41eb3 100644
--- a/src/mapper.c
+++ b/src/mapper.c
@@ -34,6 +34,7 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <errno.h>
+#include <dirent.h>
 
 static char *music_dir;
 static size_t music_dir_length;
@@ -76,6 +77,12 @@ check_directory(const char *path)
 			  path);
 	g_free(x);
 #endif
+
+	DIR *dir = opendir(path);
+	if (dir == NULL && errno == EACCES)
+		g_warning("No permission to read directory: %s", path);
+	else
+		closedir(dir);
 }
 
 static void