(ctx context.Context, req *fuse.OpenRequest, res *fuse.OpenResponse)
| 184 | var _ fusefs.NodeOpener = (*node)(nil) |
| 185 | |
| 186 | func (n *node) Open(ctx context.Context, req *fuse.OpenRequest, res *fuse.OpenResponse) (fusefs.Handle, error) { |
| 187 | Logger.Printf("CAMLI Open on %v: %#v", n.blobref, req) |
| 188 | if isWriteFlags(req.Flags) { |
| 189 | return nil, fuse.EPERM |
| 190 | } |
| 191 | ss, err := n.schema(ctx) |
| 192 | if err != nil { |
| 193 | Logger.Printf("open of %v: %v", n.blobref, err) |
| 194 | return nil, handleEIOorEINTR(err) |
| 195 | } |
| 196 | if ss.Type() == schema.TypeDirectory { |
| 197 | return n, nil |
| 198 | } |
| 199 | fr, err := ss.NewFileReader(n.fs.fetcher) |
| 200 | if err != nil { |
| 201 | // Will only happen if ss.Type != "file" or "bytes" |
| 202 | Logger.Printf("NewFileReader(%s) = %v", n.blobref, err) |
| 203 | return nil, fuse.EIO |
| 204 | } |
| 205 | return &nodeReader{n: n, fr: fr}, nil |
| 206 | } |
| 207 | |
| 208 | type nodeReader struct { |
| 209 | n *node |
nothing calls this directly
no test coverage detected