diff --git a/src/readdir.cpp b/src/readdir.cpp index f84dc54a..68db2cfe 100644 --- a/src/readdir.cpp +++ b/src/readdir.cpp @@ -22,6 +22,8 @@ THE SOFTWARE. */ +#define _BSD_SOURCE + #include #include @@ -53,6 +55,7 @@ _readdir(const vector &srcmounts, const fuse_fill_dir_t filler) { set found; + struct stat st = {0}; for(vector::const_iterator iter = srcmounts.begin(), enditer = srcmounts.end(); @@ -69,12 +72,11 @@ _readdir(const vector &srcmounts, for(struct dirent *de = ::readdir(dh); de != NULL; de = ::readdir(dh)) { - string d_name(de->d_name); - - if(found.insert(d_name).second == false) + if(found.insert(de->d_name).second == false) continue; - if(filler(buf,de->d_name,NULL,NO_OFFSET) != 0) + st.st_mode = DTTOIF(de->d_type); + if(filler(buf,de->d_name,&st,NO_OFFSET) != 0) return -ENOMEM; }