return buf;
} else if (token & tokt_number) {
snyprintf(buf,sizeof(buf),"number %d",lr_min); return buf;
+ } else if (token & tokt_fdrange && token & tokr_word) {
+ snyprintf(buf,sizeof(buf),"fd %s",buf); return buf;
} else if (token & tokt_fdrange && lr_max==-1) {
snyprintf(buf,sizeof(buf),"fdrange %d-",lr_min); return buf;
} else if (token & tokt_fdrange) {
char *ep;
unsigned long v;
- r= pa_mwsp(); if (r) return r;
mintoken= pa_numberdollar(&min); if (mintoken == tokv_error) return mintoken;
- r= pa_mwsp(); if (r) return r;
maxtoken= pa_numberdollar(&max); if (maxtoken == tokv_error) return maxtoken;
r= pa_mnl(); if (r) return r;
for (pp= pv; *pp; pp++) {
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;
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);