diff --git a/internal/fs/node_linux.go b/internal/fs/node_linux.go index 91ef4f907..55b4b05d7 100644 --- a/internal/fs/node_linux.go +++ b/internal/fs/node_linux.go @@ -1,33 +1,18 @@ package fs import ( - "os" - "path/filepath" "syscall" - "golang.org/x/sys/unix" - "github.com/restic/restic/internal/errors" + "golang.org/x/sys/unix" ) func nodeRestoreSymlinkTimestamps(path string, utimes [2]syscall.Timespec) error { - dir, err := os.Open(fixpath(filepath.Dir(path))) - if err != nil { - return errors.WithStack(err) - } - times := []unix.Timespec{ {Sec: utimes[0].Sec, Nsec: utimes[0].Nsec}, {Sec: utimes[1].Sec, Nsec: utimes[1].Nsec}, } - err = unix.UtimesNanoAt(int(dir.Fd()), filepath.Base(path), times, unix.AT_SYMLINK_NOFOLLOW) - - if err != nil { - // ignore subsequent errors - _ = dir.Close() - return errors.Wrap(err, "UtimesNanoAt") - } - - return dir.Close() + err := unix.UtimesNanoAt(unix.AT_FDCWD, path, times, unix.AT_SYMLINK_NOFOLLOW) + return errors.Wrap(err, "UtimesNanoAt") }