Create makes a new file
(ctx context.Context, req *fuse.CreateRequest, resp *fuse.CreateResponse)
| 146 | |
| 147 | // Create makes a new file |
| 148 | func (d *Dir) Create(ctx context.Context, req *fuse.CreateRequest, resp *fuse.CreateResponse) (node fusefs.Node, handle fusefs.Handle, err error) { |
| 149 | defer log.Trace(d, "name=%q", req.Name)("node=%v, handle=%v, err=%v", &node, &handle, &err) |
| 150 | // translate the fuse flags to os flags |
| 151 | osFlags := int(req.Flags) | os.O_CREATE |
| 152 | file, err := d.Dir.Create(req.Name, osFlags) |
| 153 | if err != nil { |
| 154 | return nil, nil, translateError(err) |
| 155 | } |
| 156 | fh, err := file.Open(osFlags) |
| 157 | if err != nil { |
| 158 | return nil, nil, translateError(err) |
| 159 | } |
| 160 | node = &File{file, d.fsys} |
| 161 | file.SetSys(node) // cache the FUSE node for later |
| 162 | return node, &FileHandle{fh}, err |
| 163 | } |
| 164 | |
| 165 | var _ fusefs.NodeMkdirer = (*Dir)(nil) |
| 166 |