X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=userv.git;a=blobdiff_plain;f=parser.c;fp=parser.c;h=257eb3e4ed808816d3ee8ca1f0ee8cc4aac48f40;hp=a5b5fb5fd66de0b10d504a7238c6883efae7190c;hb=dd2eafd32cd4da1c5aa816b367073c3f56e67f5c;hpb=a271d7dfc7a7ab9509daf656f0a92a55c7fe7257 diff --git a/parser.c b/parser.c index a5b5fb5..257eb3e 100644 --- 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);