Commit 9c0b145e authored by Kato Kazuyoshi's avatar Kato Kazuyoshi Committed by Russ Cox

os: don't return Chmod's error from Mkdir and OpenFile

Mkdir and OpenFile call Chmod internally on *BSD and Solaris,
because these OSes don't handle the sticky bit correctly.

However Chmod's error should be ignored. It shouldn't hide
the fact that a file itself is created.

Fixes #8383

Change-Id: Ia2e0b2ba72712d73a0a48ba5a263432e0fff31a5
Reviewed-on: https://go-review.googlesource.com/2057Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
parent 69b2f70f
......@@ -204,14 +204,15 @@ func (f *File) WriteString(s string) (ret int, err error) {
func Mkdir(name string, perm FileMode) error {
e := syscall.Mkdir(name, syscallMode(perm))
// mkdir(2) itself won't handle the sticky bit on *BSD and Solaris
if !supportsCreateWithStickyBit && e == nil && perm&ModeSticky != 0 {
e = Chmod(name, perm)
}
if e != nil {
return &PathError{"mkdir", name, e}
}
// mkdir(2) itself won't handle the sticky bit on *BSD and Solaris
if !supportsCreateWithStickyBit && perm&ModeSticky != 0 {
Chmod(name, perm)
}
return nil
}
......
......@@ -88,8 +88,8 @@ func OpenFile(name string, flag int, perm FileMode) (file *File, err error) {
}
// open(2) itself won't handle the sticky bit on *BSD and Solaris
if chmod && e == nil {
e = Chmod(name, perm)
if chmod {
Chmod(name, perm)
}
// There's a race here with fork/exec, which we are
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment