if (statp && (flags & FUSE_FILL_DIR_PLUS)) {
e.attr = *statp;
-
- if (!is_dot_or_dotdot(name)) {
- res = do_lookup(f, dh->nodeid, name, &e);
- if (res) {
- dh->error = res;
- return 1;
- }
- }
} else {
e.attr.st_ino = FUSE_UNKNOWN_INO;
if (statp) {
if (extend_contents(dh, dh->needlen) == -1)
return 1;
+ if (statp && (flags & FUSE_FILL_DIR_PLUS)) {
+ if (!is_dot_or_dotdot(name)) {
+ res = do_lookup(f, dh->nodeid, name, &e);
+ if (res) {
+ dh->error = res;
+ return 1;
+ }
+ }
+ }
+
newlen = dh->len +
fuse_add_direntry_plus(dh->req, dh->contents + dh->len,
dh->needlen - dh->len, name,
{
off_t pos;
struct fuse_direntry *de = dh->first;
+ int res;
dh->len = 0;
.ino = 0,
.attr = de->stat,
};
+
+ if (!is_dot_or_dotdot(de->name)) {
+ res = do_lookup(dh->fuse, dh->nodeid,
+ de->name, &e);
+ if (res) {
+ dh->error = res;
+ return 1;
+ }
+ }
+
thislen = fuse_add_direntry_plus(req, p, rem,
de->name, &e, pos);
} else {