Skip to content

Commit abd8a0e

Browse files
author
Mrunal Patel
authored
Merge pull request #5 from kolyshkin/mkall
Fixes for MkdirAllAsNew
2 parents 7be891c + 5f27393 commit abd8a0e

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

idtools.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package fileutils
33
import (
44
"os"
55
"path/filepath"
6+
"syscall"
67
)
78

89
// MkdirAllNewAs creates a directory (include any along the path) and then modifies
@@ -14,9 +15,13 @@ func MkdirAllNewAs(path string, mode os.FileMode, ownerUID, ownerGID int) error
1415
// so that we can chown all of them properly at the end. If chownExisting is false, we won't
1516
// chown the full directory path if it exists
1617
var paths []string
17-
if _, err := os.Stat(path); err != nil && os.IsNotExist(err) {
18+
st, err := os.Stat(path)
19+
if err != nil && os.IsNotExist(err) {
1820
paths = []string{path}
1921
} else if err == nil {
22+
if !st.IsDir() {
23+
return &os.PathError{Op: "mkdir", Path: path, Err: syscall.ENOTDIR}
24+
}
2025
// nothing to do; directory path fully exists already
2126
return nil
2227
}
@@ -34,7 +39,7 @@ func MkdirAllNewAs(path string, mode os.FileMode, ownerUID, ownerGID int) error
3439
}
3540
}
3641

37-
if err := os.MkdirAll(path, mode); err != nil && !os.IsExist(err) {
42+
if err := os.MkdirAll(path, mode); err != nil {
3843
return err
3944
}
4045

0 commit comments

Comments
 (0)