diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index 0d44665b005555bcf7bd308d2ad15d189ee3478c..60e7bb7af9e38283ab7d18c2171bd9cc7d26c2e1 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -1244,30 +1244,24 @@ bool LocalStore::verifyStore(bool checkContents, RepairFlag repair)
 
         printInfo("checking link hashes...");
 
-        AutoCloseDir dir(opendir(linksDir.c_str()));
-        if (!dir) throw SysError(format("opening directory '%1%'") % linksDir);
-
-        struct dirent * dirent;
-        while (errno = 0, dirent = readdir(dir.get())) { /* sic */
-            checkInterrupt();
-            if (strcmp(dirent->d_name, ".") == 0 || strcmp(dirent->d_name, "..") == 0) continue;
-            Path linkPath = linksDir + "/" + dirent->d_name;
+        for (auto & link : readDirectory(linksDir)) {
+            printMsg(lvlTalkative, "checking contents of '%s'", link.name);
+            Path linkPath = linksDir + "/" + link.name;
             string hash = hashPath(htSHA256, linkPath).first.to_string(Base32, false);
-            if (hash != dirent->d_name) {
-                printError(format("link '%1%' was modified! "
-                                  "expected hash '%2%', got '%3%'")
-                                  % linkPath % dirent->d_name % hash);
+            if (hash != link.name) {
+                printError(
+                    "link '%s' was modified! expected hash '%s', got '%s'",
+                    linkPath, link.name, hash);
                 if (repair) {
                     if (unlink(linkPath.c_str()) == 0)
-                        printError(format("Removed link '%1%'") % linkPath);
+                        printError("removed link '%s'", linkPath);
                     else
-                        throw SysError(format("removing corrupt link '%1%'") % linkPath);
+                        throw SysError("removing corrupt link '%s'", linkPath);
                 } else {
                     errors = true;
                 }
             }
         }
-        if (errno) throw SysError(format("reading directory '%1%'") % linksDir);
 
         printInfo("checking store hashes...");