37 lines
559 B
Go
37 lines
559 B
Go
|
package vfs
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"io/fs"
|
||
|
"os"
|
||
|
"sync"
|
||
|
)
|
||
|
|
||
|
type directory struct {
|
||
|
name string
|
||
|
mode os.FileMode
|
||
|
children map[string]interface{}
|
||
|
mutex sync.Mutex
|
||
|
}
|
||
|
|
||
|
type directoryHandle struct {
|
||
|
dir *directory
|
||
|
idx int
|
||
|
}
|
||
|
|
||
|
func (d *directoryHandle) Stat() (fs.FileInfo, error) {
|
||
|
return &fileInfo{
|
||
|
name: d.dir.name,
|
||
|
size: 4096,
|
||
|
mode: d.dir.mode | fs.ModeDir,
|
||
|
}, nil
|
||
|
}
|
||
|
|
||
|
func (d *directoryHandle) Read(data []byte) (int, error) {
|
||
|
return 0, fmt.Errorf("%s is a directory", d.dir.name)
|
||
|
}
|
||
|
|
||
|
func (d *directoryHandle) Close() error {
|
||
|
return nil
|
||
|
}
|