func removeAllFrom(parent *File, base string) error {
parentFd := int(parent.Fd())
// Simple case: if Unlink (aka remove) works, we're done.
- err := unix.Unlinkat(parentFd, base, 0)
+ err := ignoringEINTR(func() error {
+ return unix.Unlinkat(parentFd, base, 0)
+ })
if err == nil || IsNotExist(err) {
return nil
}
// Is this a directory we need to recurse into?
var statInfo syscall.Stat_t
- statErr := unix.Fstatat(parentFd, base, &statInfo, unix.AT_SYMLINK_NOFOLLOW)
+ statErr := ignoringEINTR(func() error {
+ return unix.Fstatat(parentFd, base, &statInfo, unix.AT_SYMLINK_NOFOLLOW)
+ })
if statErr != nil {
if IsNotExist(statErr) {
return nil
}
// Remove the directory itself.
- unlinkError := unix.Unlinkat(parentFd, base, unix.AT_REMOVEDIR)
+ unlinkError := ignoringEINTR(func() error {
+ return unix.Unlinkat(parentFd, base, unix.AT_REMOVEDIR)
+ })
if unlinkError == nil || IsNotExist(unlinkError) {
return nil
}