提交 b559c3e8 作者: Jeromy

PutNode creates intermediary nodes

License: MIT
Signed-off-by: 's avatarJeromy <jeromyj@gmail.com>
上级 9c641f99
...@@ -328,6 +328,13 @@ func (adder *Adder) addNode(node *dag.Node, path string) error { ...@@ -328,6 +328,13 @@ func (adder *Adder) addNode(node *dag.Node, path string) error {
path = key.Pretty() path = key.Pretty()
} }
dir := gopath.Dir(path)
if dir != "." {
if err := mfs.Mkdir(adder.mr, dir, true); err != nil {
return err
}
}
if err := mfs.PutNode(adder.mr, path, node); err != nil { if err := mfs.PutNode(adder.mr, path, node); err != nil {
return err return err
} }
......
...@@ -268,7 +268,9 @@ func (d *Directory) Mkdir(name string) (*Directory, error) { ...@@ -268,7 +268,9 @@ func (d *Directory) Mkdir(name string) (*Directory, error) {
return nil, err return nil, err
} }
return d.childDir(name) dirobj := NewDirectory(d.ctx, name, ndir, d, d.dserv)
d.childDirs[name] = dirobj
return dirobj, nil
} }
func (d *Directory) Unlink(name string) error { func (d *Directory) Unlink(name string) error {
......
...@@ -116,7 +116,10 @@ func Mkdir(r *Root, pth string, parents bool) error { ...@@ -116,7 +116,10 @@ func Mkdir(r *Root, pth string, parents bool) error {
if len(parts) == 0 { if len(parts) == 0 {
// this will only happen on 'mkdir /' // this will only happen on 'mkdir /'
return fmt.Errorf("cannot mkdir '%s'", pth) if parents {
return nil
}
return fmt.Errorf("cannot create directory '/': Already exists")
} }
cur := r.GetValue().(*Directory) cur := r.GetValue().(*Directory)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论