diff --git a/legacy/evil/ChangeLog b/legacy/evil/ChangeLog index 5514b0c0af..c1efe0374c 100644 --- a/legacy/evil/ChangeLog +++ b/legacy/evil/ChangeLog @@ -1,3 +1,11 @@ +2010-10-22 Vincent Torri + + * src/lib/Makefile.am: + * src/lib/dirent.h: + * src/lib/evil_dirent.c: + use our own dirent structure and implementation instead of + mingw one. + 2010-09-14 Vincent Torri * src/lib/Makefile.am: diff --git a/legacy/evil/src/lib/Makefile.am b/legacy/evil/src/lib/Makefile.am index 9666fb2e92..351ac3692a 100644 --- a/legacy/evil/src/lib/Makefile.am +++ b/legacy/evil/src/lib/Makefile.am @@ -18,7 +18,7 @@ evil_time.h \ evil_unistd.h \ evil_util.h -nobase_include_HEADERS = pwd.h sys/mman.h fnmatch.h +nobase_include_HEADERS = pwd.h sys/mman.h fnmatch.h dirent.h if EVIL_HAVE_WINCE diff --git a/legacy/evil/src/lib/dirent.h b/legacy/evil/src/lib/dirent.h index e61ea37b07..ac6d4faeb5 100644 --- a/legacy/evil/src/lib/dirent.h +++ b/legacy/evil/src/lib/dirent.h @@ -22,13 +22,16 @@ # include #endif +#define DT_UNKNOWN 0 +#define DT_DIR 4 typedef struct DIR DIR; struct dirent { - char d_name[260 + 1]; - int d_mode; + char d_name[260 + 1]; + int d_mode; + unsigned char d_type; }; diff --git a/legacy/evil/src/lib/evil_dirent.c b/legacy/evil/src/lib/evil_dirent.c index 0fb1d99080..e02b95fe27 100644 --- a/legacy/evil/src/lib/evil_dirent.c +++ b/legacy/evil/src/lib/evil_dirent.c @@ -137,6 +137,11 @@ DIR *opendir(char const *name) #endif dir->dirent.d_mode = (int)dir->data.dwFileAttributes; + if (dir->data.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) + dir->dirent.d_type = DT_DIR; + else + dir->dirent.d_type = DT_UNKNOWN; + return dir; }