From 335caf0bc74f4629765d858527a044aa9fc333bb Mon Sep 17 00:00:00 2001 From: Henry Date: Sat, 28 Feb 2015 14:28:24 +0100 Subject: [PATCH] implements check and fixed argument ordering --- fuse/ipns/ipns_unix.go | 34 +++++++++++++++++++++++++--------- fuse/readonly/readonly_unix.go | 15 ++++++++++++--- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/fuse/ipns/ipns_unix.go b/fuse/ipns/ipns_unix.go index 85fc5c2e8..76440a60a 100644 --- a/fuse/ipns/ipns_unix.go +++ b/fuse/ipns/ipns_unix.go @@ -360,7 +360,7 @@ func (s *Node) Read(req *fuse.ReadRequest, resp *fuse.ReadResponse, ctx context. return err // may be non-nil / not succeeded } -func (n *Node) Write(req *fuse.WriteRequest, resp *fuse.WriteResponse, ctx context.Context) error { +func (n *Node) Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) error { // log.Debugf("ipns: Node Write [%s]: flags = %s, offset = %d, size = %d", n.name, req.Flags.String(), req.Offset, len(req.Data)) if IpnsReadonly { log.Debug("Attempted to write on readonly ipns filesystem.") @@ -383,7 +383,7 @@ func (n *Node) Write(req *fuse.WriteRequest, resp *fuse.WriteResponse, ctx conte return nil } -func (n *Node) Flush(req *fuse.FlushRequest, ctx context.Context) error { +func (n *Node) Flush(ctx context.Context, req *fuse.FlushRequest) error { if IpnsReadonly { return nil } @@ -470,11 +470,11 @@ func (n *Node) republishRoot() error { return nil } -func (n *Node) Fsync(req *fuse.FsyncRequest, ctx context.Context) error { +func (n *Node) Fsync(ctx context.Context, req *fuse.FsyncRequest) error { return nil } -func (n *Node) Mkdir(req *fuse.MkdirRequest, ctx context.Context) (fs.Node, error) { +func (n *Node) Mkdir(ctx context.Context, req *fuse.MkdirRequest) (fs.Node, error) { if IpnsReadonly { return nil, fuse.EPERM } @@ -508,7 +508,7 @@ func (n *Node) Mkdir(req *fuse.MkdirRequest, ctx context.Context) (fs.Node, erro return child, nil } -func (n *Node) Open(req *fuse.OpenRequest, resp *fuse.OpenResponse, ctx context.Context) (fs.Handle, error) { +func (n *Node) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fs.Handle, error) { //log.Debug("[%s] Received open request! flags = %s", n.name, req.Flags.String()) //TODO: check open flags and truncate if necessary if req.Flags&fuse.OpenTruncate != 0 { @@ -521,11 +521,11 @@ func (n *Node) Open(req *fuse.OpenRequest, resp *fuse.OpenResponse, ctx context. return n, nil } -func (n *Node) Mknod(req *fuse.MknodRequest, ctx context.Context) (fs.Node, error) { +func (n *Node) Mknod(ctx context.Context, req *fuse.MknodRequest) (fs.Node, error) { return nil, nil } -func (n *Node) Create(req *fuse.CreateRequest, resp *fuse.CreateResponse, ctx context.Context) (fs.Node, fs.Handle, error) { +func (n *Node) Create(ctx context.Context, req *fuse.CreateRequest, resp *fuse.CreateResponse) (fs.Node, fs.Handle, error) { if IpnsReadonly { log.Debug("Attempted to call Create on a readonly filesystem.") return nil, nil, fuse.EPERM @@ -555,7 +555,7 @@ func (n *Node) Create(req *fuse.CreateRequest, resp *fuse.CreateResponse, ctx co return child, child, nil } -func (n *Node) Remove(req *fuse.RemoveRequest, ctx context.Context) error { +func (n *Node) Remove(ctx context.Context, req *fuse.RemoveRequest) error { if IpnsReadonly { return fuse.EPERM } @@ -578,7 +578,7 @@ func (n *Node) Remove(req *fuse.RemoveRequest, ctx context.Context) error { return nil } -func (n *Node) Rename(req *fuse.RenameRequest, newDir fs.Node, ctx context.Context) error { +func (n *Node) Rename(ctx context.Context, req *fuse.RenameRequest, newDir fs.Node) error { if IpnsReadonly { log.Debug("Attempted to call Rename on a readonly filesystem.") return fuse.EPERM @@ -625,3 +625,19 @@ func (n *Node) update(name string, newnode *mdag.Node) error { n.Nd = nnode return nil } + +// to check that out Node implements all the interfaces we want +type ipnsNode interface { + fs.Node + fs.HandleWriter + fs.HandleFlusher + fs.NodeFsyncer + fs.NodeMkdirer + fs.NodeOpener + fs.NodeMknoder + fs.NodeCreater + fs.NodeRemover + fs.NodeRenamer +} + +var _ ipnsNode = (*Node)(nil) diff --git a/fuse/readonly/readonly_unix.go b/fuse/readonly/readonly_unix.go index c8646856f..72767037e 100644 --- a/fuse/readonly/readonly_unix.go +++ b/fuse/readonly/readonly_unix.go @@ -50,7 +50,7 @@ func (*Root) Attr() fuse.Attr { } // Lookup performs a lookup under this node. -func (s *Root) Lookup(name string, ctx context.Context) (fs.Node, error) { +func (s *Root) Lookup(ctx context.Context, name string) (fs.Node, error) { log.Debugf("Root Lookup: '%s'", name) switch name { case "mach_kernel", ".hidden", "._.": @@ -116,7 +116,7 @@ func (s *Node) Attr() fuse.Attr { } // Lookup performs a lookup under this node. -func (s *Node) Lookup(name string, ctx context.Context) (fs.Node, error) { +func (s *Node) Lookup(ctx context.Context, name string) (fs.Node, error) { log.Debugf("Lookup '%s'", name) nodes, err := s.Ipfs.Resolver.ResolveLinks(s.Nd, []string{name}) if err != nil { @@ -145,7 +145,7 @@ func (s *Node) ReadDir(ctx context.Context) ([]fuse.Dirent, error) { return nil, fuse.ENOENT } -func (s *Node) Read(req *fuse.ReadRequest, resp *fuse.ReadResponse, ctx context.Context) error { +func (s *Node) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error { k, err := s.Nd.Key() if err != nil { @@ -178,3 +178,12 @@ func (s *Node) Read(req *fuse.ReadRequest, resp *fuse.ReadResponse, ctx context. lm["res_size"] = n return nil // may be non-nil / not succeeded } + +// to check that out Node implements all the interfaces we want +type roNode interface { + fs.Node + fs.NodeStringLookuper + fs.HandleReader +} + +var _ roNode = (*Node)(nil)