From dfd98f27b25868c770cb1d50c3a3a82e5f53453d Mon Sep 17 00:00:00 2001 From: Stephen Whitmore Date: Wed, 6 Apr 2016 12:31:06 -0700 Subject: [PATCH] mfs.Mkdir returns the final Directory it creates License: MIT Signed-off-by: Stephen Whitmore --- core/commands/files/files.go | 2 +- core/coreunix/add.go | 4 ++-- mfs/ops.go | 20 ++++++++++---------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/commands/files/files.go b/core/commands/files/files.go index 913a89dc1..5b7ab99b7 100644 --- a/core/commands/files/files.go +++ b/core/commands/files/files.go @@ -650,7 +650,7 @@ Examples: flush = true } - err = mfs.Mkdir(n.FilesRoot, dirtomake, dashp, flush) + _, err = mfs.Mkdir(n.FilesRoot, dirtomake, dashp, flush) if err != nil { res.SetError(err, cmds.ErrNormal) return diff --git a/core/coreunix/add.go b/core/coreunix/add.go index db0e100b8..9085c0140 100644 --- a/core/coreunix/add.go +++ b/core/coreunix/add.go @@ -328,7 +328,7 @@ func (adder *Adder) addNode(node *dag.Node, path string) error { dir := gopath.Dir(path) if dir != "." { - if err := mfs.Mkdir(adder.mr, dir, true, false); err != nil { + if _, err := mfs.Mkdir(adder.mr, dir, true, false); err != nil { return err } } @@ -399,7 +399,7 @@ func (adder *Adder) addFile(file files.File) error { func (adder *Adder) addDir(dir files.File) error { log.Infof("adding directory: %s", dir.FileName()) - err := mfs.Mkdir(adder.mr, dir.FileName(), true, false) + _, err := mfs.Mkdir(adder.mr, dir.FileName(), true, false) if err != nil { return err } diff --git a/mfs/ops.go b/mfs/ops.go index b02d64fd1..e5c36206a 100644 --- a/mfs/ops.go +++ b/mfs/ops.go @@ -100,9 +100,9 @@ func PutNode(r *Root, path string, nd *dag.Node) error { // Mkdir creates a directory at 'path' under the directory 'd', creating // intermediary directories as needed if 'mkparents' is set to true -func Mkdir(r *Root, pth string, mkparents bool, flush bool) error { +func Mkdir(r *Root, pth string, mkparents bool, flush bool) (*Directory, error) { if pth == "" { - return nil + return nil, nil } parts := path.SplitList(pth) if parts[0] == "" { @@ -117,9 +117,9 @@ func Mkdir(r *Root, pth string, mkparents bool, flush bool) error { if len(parts) == 0 { // this will only happen on 'mkdir /' if mkparents { - return nil + return nil, nil } - return fmt.Errorf("cannot create directory '/': Already exists") + return nil, fmt.Errorf("cannot create directory '/': Already exists") } cur := r.GetValue().(*Directory) @@ -128,16 +128,16 @@ func Mkdir(r *Root, pth string, mkparents bool, flush bool) error { if err == os.ErrNotExist && mkparents { mkd, err := cur.Mkdir(d) if err != nil { - return err + return nil, err } fsn = mkd } else if err != nil { - return err + return nil, err } next, ok := fsn.(*Directory) if !ok { - return fmt.Errorf("%s was not a directory", path.Join(parts[:i])) + return nil, fmt.Errorf("%s was not a directory", path.Join(parts[:i])) } cur = next } @@ -145,18 +145,18 @@ func Mkdir(r *Root, pth string, mkparents bool, flush bool) error { final, err := cur.Mkdir(parts[len(parts)-1]) if err != nil { if !mkparents || err != os.ErrExist || final == nil { - return err + return nil, err } } if flush { err := final.Flush() if err != nil { - return err + return nil, err } } - return nil + return final, nil } func Lookup(r *Root, path string) (FSNode, error) {