chiark / gitweb /
Do not ignore errors from readdir.
[userv.git] / parser.c
index a5b5fb5fd66de0b10d504a7238c6883efae7190c..257eb3e4ed808816d3ee8ca1f0ee8cc4aac48f40 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -997,7 +997,7 @@ int df_includedirectory(int dtoken) {
     return parseerrprint("unable to open directory `%s': %s",cpget,strerror(errno));
   cp= xstrsave(cpget);
   cpl= strlen(cp);
-  while ((de= readdir(d))) {
+  while ((errno=0, de= readdir(d))) {
     tel= strlen(de->d_name);
     if (!tel) continue;
     p= de->d_name;
@@ -1016,6 +1016,12 @@ int df_includedirectory(int dtoken) {
       goto x_err;
     }
   }
+  if (errno) {
+    parseerrprint("error reading directory `%s': %s",cp,strerror(errno));
+    closedir(d);
+    free(cp);
+    return tokv_error;
+  }
   if (closedir(d)) {
     parseerrprint("error closing directory `%s': %s",cp,strerror(errno));
     free(cp);