skip searching for child on -r flag
License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>
Jeromy committed
Dec 18, 2015 at 21:57 UTC
3ff880b023f33975e033efe156123a379dbb5a70
1 file changed
+16
-13
core/commands/files/files.go
+16
-13
@@ -639,7 +639,7 @@ remove files or directories
639
dir, name := gopath.Split(path)
640
parent, err := mfs.Lookup(nd.FilesRoot, dir)
641
if err != nil {
642
- res.SetError(err, cmds.ErrNormal)
642
+ res.SetError(fmt.Errorf("parent lookup: %s", err), cmds.ErrNormal)
643
return
644
}
645
@@ -649,26 +649,29 @@ remove files or directories
649
return
650
}
651
652
+ dashr, _, _ := req.Option("r").Bool()
653
+
654
+ // if '-r' specified, don't check file type (in bad scenarios, the block may not exist)
655
+ if dashr {
656
+ err := pdir.Unlink(name)
657
+ if err != nil {
658
+ res.SetError(err, cmds.ErrNormal)
659
+ return
660
+ }
661
+
662
+ return
663
+ }
664
+
665
childi, err := pdir.Child(name)
666
if err != nil {
667
res.SetError(err, cmds.ErrNormal)
668
return
669
}
670
658
- dashr, _, _ := req.Option("r").Bool()
659
-
671
switch childi.(type) {
672
case *mfs.Directory:
662
- if dashr {
663
- err := pdir.Unlink(name)
664
- if err != nil {
665
- res.SetError(err, cmds.ErrNormal)
666
- return
667
- }
668
- } else {
669
- res.SetError(fmt.Errorf("%s is a directory, use -r to remove directories", path), cmds.ErrNormal)
670
- return
671
- }
673
+ res.SetError(fmt.Errorf("%s is a directory, use -r to remove directories", path), cmds.ErrNormal)
674
+ return
675
default:
676
err := pdir.Unlink(name)
677
if err != nil {