
On Thu, 10 Apr 2014 09:22:42 -0600 Eric Blake <eblake@redhat.com> wrote:
On 04/10/2014 08:38 AM, Natanael Copa wrote:
- errno = 0; - while ((cpudirent = readdir(cpudir))) { + for (errno = 0; (cpudirent = readdir(cpudir)); errno = 0) { if (sscanf(cpudirent->d_name, "cpu%u", &cpu) != 1) continue;
...
I suppose we could use helper function to make it more readable:
static struct dirent *virReaddir(DIR *dirp) { errno = 0; return readdir(dirp); }
Or maybe:
int virReaddir(DIR *dirp, struct dirent **ent) { errno = 0; *ent = readdir(dirp); if (!*ent && errno) { virReportSystemError(errno, _("unable to read directory")) return -1; } return *ent ? 1 : 0; }
and used as:
while ((ret = virReaddir(dirp, &entry)) > 0) { process entry } if (ret < 0) goto error;
This looks better yes. Should I prepare a new patch with this? And grep for more readdirs? -nc