diff --git a/samples/hello_fs.go b/samples/hello_fs.go index 304baff..de2df3a 100644 --- a/samples/hello_fs.go +++ b/samples/hello_fs.go @@ -4,7 +4,9 @@ package samples import ( + "io" "os" + "strings" "github.com/jacobsa/fuse" "github.com/jacobsa/fuse/fuseutil" @@ -243,3 +245,23 @@ func (fs *HelloFS) OpenFile( resp = &fuse.OpenFileResponse{} return } + +func (fs *HelloFS) ReadFile( + ctx context.Context, + req *fuse.ReadFileRequest) (resp *fuse.ReadFileResponse, err error) { + resp = &fuse.ReadFileResponse{} + + // Let io.ReaderAt deal with the semantics. + reader := strings.NewReader("Hello, world!") + + resp.Data = make([]byte, req.Size) + n, err := reader.ReadAt(resp.Data, req.Offset) + resp.Data = resp.Data[:n] + + // Special case: FUSE doesn't expect us to return io.EOF. + if err == io.EOF { + err = nil + } + + return +}