summaryrefslogtreecommitdiff
path: root/libgo/go/os/removeall_noat.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/os/removeall_noat.go')
-rw-r--r--libgo/go/os/removeall_noat.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/libgo/go/os/removeall_noat.go b/libgo/go/os/removeall_noat.go
index cf26bdb2161..fb9b45f7f1d 100644
--- a/libgo/go/os/removeall_noat.go
+++ b/libgo/go/os/removeall_noat.go
@@ -8,6 +8,7 @@ package os
import (
"io"
+ "runtime"
"syscall"
)
@@ -124,10 +125,16 @@ func removeAll(path string) error {
// Remove directory.
err1 := Remove(path)
- err1 = removeAllTestHook(err1)
if err1 == nil || IsNotExist(err1) {
return nil
}
+ if runtime.GOOS == "windows" && IsPermission(err1) {
+ if fs, err := Stat(path); err == nil {
+ if err = Chmod(path, FileMode(0200|int(fs.Mode()))); err == nil {
+ err1 = Remove(path)
+ }
+ }
+ }
if err == nil {
err = err1
}