PutNode creates intermediary nodes
License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>
Jeromy committed
Dec 28, 2015 at 07:56 UTC
b559c3e88aa1430f370ad078b3af71575dfcf8d7
3 files changed
+14
-2
core/coreunix/add.go
+7
@@ -328,6 +328,13 @@ func (adder *Adder) addNode(node *dag.Node, path string) error {
328
path = key.Pretty()
329
}
330
331
+ dir := gopath.Dir(path)
332
+ if dir != "." {
333
+ if err := mfs.Mkdir(adder.mr, dir, true); err != nil {
334
+ return err
335
+ }
336
+ }
337
+
338
if err := mfs.PutNode(adder.mr, path, node); err != nil {
339
return err
340
}
mfs/dir.go
+3
-1
@@ -268,7 +268,9 @@ func (d *Directory) Mkdir(name string) (*Directory, error) {
268
return nil, err
269
}
270
271
- return d.childDir(name)
271
+ dirobj := NewDirectory(d.ctx, name, ndir, d, d.dserv)
272
+ d.childDirs[name] = dirobj
273
+ return dirobj, nil
274
}
275
276
func (d *Directory) Unlink(name string) error {
mfs/ops.go
+4
-1
@@ -116,7 +116,10 @@ func Mkdir(r *Root, pth string, parents bool) error {
116
117
if len(parts) == 0 {
118
// this will only happen on 'mkdir /'
119
- return fmt.Errorf("cannot mkdir '%s'", pth)
119
+ if parents {
120
+ return nil
121
+ }
122
+ return fmt.Errorf("cannot create directory '/': Already exists")
123
}
124
125
cur := r.GetValue().(*Directory)