mirror of
https://github.com/restic/restic.git
synced 2026-02-03 12:29:37 -05:00
Previously, nodeRestoreTimestamps would do something like
if node.Type == restic.NodeTypeSymlink {
return nodeRestoreSymlinkTimestamps(...)
}
return syscall.UtimesNano(...)
where nodeRestoreSymlinkTimestamps was either a no-op or a
reimplementation of syscall.UtimesNano that handles symlinks, with some
repeated converting between timestamp types. The Linux implementation
was a bit clumsy, requiring three syscalls to set the timestamps.
In this new setup, there is a function utimesNano that has three
implementations:
* on Linux, it's a modified syscall.UtimesNano that uses
AT_SYMLINK_NOFOLLOW and AT_FDCWD so it can handle any type in a single
call;
* on other Unix platforms, it just calls the syscall function after
skipping symlinks;
* on Windows, it's the modified UtimesNano that was previously called
nodeRestoreSymlinkTimestamps, except with different arguments.
|
||
|---|---|---|
| .. | ||
| archiver | ||
| backend | ||
| bloblru | ||
| checker | ||
| crypto | ||
| debug | ||
| dump | ||
| errors | ||
| feature | ||
| filter | ||
| fs | ||
| fuse | ||
| migrations | ||
| options | ||
| repository | ||
| restic | ||
| restorer | ||
| selfupdate | ||
| test | ||
| textfile | ||
| ui | ||
| walker | ||