@cryptotaxi247 / kubo / commits / b559c3e88

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)