mount2: Fix missing . and .. entries

This commit is contained in:
Filipe Azevedo 2022-09-03 00:25:39 +02:00 committed by Nick Craig-Wood
parent f9946b37f9
commit 7f1240516e

View File

@ -227,7 +227,7 @@ type dirStream struct {
// HasNext indicates if there are further entries. HasNext // HasNext indicates if there are further entries. HasNext
// might be called on already closed streams. // might be called on already closed streams.
func (ds *dirStream) HasNext() bool { func (ds *dirStream) HasNext() bool {
return ds.i < len(ds.nodes) return ds.i < len(ds.nodes)+2
} }
// Next retrieves the next entry. It is only called if HasNext // Next retrieves the next entry. It is only called if HasNext
@ -235,7 +235,22 @@ func (ds *dirStream) HasNext() bool {
// indicate I/O errors // indicate I/O errors
func (ds *dirStream) Next() (de fuse.DirEntry, errno syscall.Errno) { func (ds *dirStream) Next() (de fuse.DirEntry, errno syscall.Errno) {
// defer log.Trace(nil, "")("de=%+v, errno=%v", &de, &errno) // defer log.Trace(nil, "")("de=%+v, errno=%v", &de, &errno)
fi := ds.nodes[ds.i] if ds.i == 0 {
ds.i++
return fuse.DirEntry{
Mode: fuse.S_IFDIR,
Name: ".",
Ino: 0, // FIXME
}, 0
} else if ds.i == 1 {
ds.i++
return fuse.DirEntry{
Mode: fuse.S_IFDIR,
Name: "..",
Ino: 0, // FIXME
}, 0
}
fi := ds.nodes[ds.i-2]
de = fuse.DirEntry{ de = fuse.DirEntry{
// Mode is the file's mode. Only the high bits (e.g. S_IFDIR) // Mode is the file's mode. Only the high bits (e.g. S_IFDIR)
// are considered. // are considered.