Browse Source

Redefine readdir() on IsoFileSource, to skip "." and ".." dirs.

release-1.5.4.branch
Vreixo Formoso 14 years ago
parent
commit
0306bb5daf
  1. 18
      src/fs_local.c
  2. 2
      src/fsource.h

18
src/fs_local.c

@ -281,12 +281,18 @@ int lfs_readdir(IsoFileSource *src, IsoFileSource **child)
size_t a, b;
int ret;
entry = readdir(data->info.dir);
if (entry == NULL) {
if (errno == EBADF)
return ISO_FILE_ERROR;
else
return 0; /* EOF */
/* while to skip "." and ".." dirs */
while (1) {
entry = readdir(data->info.dir);
if (entry == NULL) {
if (errno == EBADF)
return ISO_FILE_ERROR;
else
return 0; /* EOF */
}
if (strcmp(entry->d_name,".") && strcmp(entry->d_name,"..")) {
break;
}
}
/* constructs the new path */

2
src/fsource.h

@ -153,6 +153,8 @@ struct Iso_File_Source
* The dir must be open() before calling this, and close() when no more
* needed. Only valid for dirs.
*
* Note that "." and ".." children MUST NOT BE returned.
*
* @param child
* pointer to be filled with the given child. Undefined on error or OEF
* @return

Loading…
Cancel
Save