diff --git a/include/MDE/Directory.h b/include/MDE/Directory.h index 733bb0d..19d76cf 100644 --- a/include/MDE/Directory.h +++ b/include/MDE/Directory.h @@ -7,7 +7,7 @@ extern "C" { #endif -void MDEDirectoryScan(const char* path, void (*call)(const char* name, int dir, void* user), void* user); +void MDEDirectoryScan(const char* path, void (*call)(const char* name, int dir, int symlink, void* user), void* user); #ifdef __cplusplus } diff --git a/src/directory.c b/src/directory.c index a4d1675..53f0366 100644 --- a/src/directory.c +++ b/src/directory.c @@ -5,7 +5,7 @@ #include #include -void MDEDirectoryScan(const char* path, void (*call)(const char* name, int dir, void* user), void* user) { +void MDEDirectoryScan(const char* path, void (*call)(const char* name, int dir, int symlink, void* user), void* user) { DIR* dir = opendir(path); if(dir != NULL) { struct dirent* d; @@ -19,8 +19,8 @@ void MDEDirectoryScan(const char* path, void (*call)(const char* name, int dir, if(path[strlen(path) - 1] != '/') strcat(p, "/"); strcat(p, d->d_name); - if(stat(p, &s) == 0) { - call(p, S_ISDIR(s.st_mode) ? 1 : 0, user); + if(lstat(p, &s) == 0) { + call(p, S_ISDIR(s.st_mode) ? 1 : 0, S_ISLNK(s.st_mode) ? 1 : 0, user); } free(p);