forked from TrueCloudLab/restic
fs: fix restoring timestamps on Windows for long paths
This commit is contained in:
parent
efec1a5e96
commit
4469fe1575
3 changed files with 12 additions and 3 deletions
9
changelog/unreleased/issue-1843
Normal file
9
changelog/unreleased/issue-1843
Normal file
|
@ -0,0 +1,9 @@
|
|||
Bugfix: Correctly restore timestamp on long filepaths on old Windows versions
|
||||
|
||||
The `restore` command did not restore timestamps on file paths longer than 256
|
||||
characters on Windows versions before Windows 10 1607.
|
||||
|
||||
This issue is now resolved.
|
||||
|
||||
https://github.com/restic/restic/issues/1843
|
||||
https://github.com/restic/restic/pull/5061
|
|
@ -315,7 +315,7 @@ func nodeRestoreTimestamps(node *restic.Node, path string) error {
|
|||
return nodeRestoreSymlinkTimestamps(path, utimes)
|
||||
}
|
||||
|
||||
if err := syscall.UtimesNano(path, utimes[:]); err != nil {
|
||||
if err := syscall.UtimesNano(fixpath(path), utimes[:]); err != nil {
|
||||
return errors.Wrap(err, "UtimesNano")
|
||||
}
|
||||
|
||||
|
|
|
@ -202,7 +202,7 @@ func genericAttributesToWindowsAttrs(attrs map[restic.GenericAttributeType]json.
|
|||
// restoreCreationTime gets the creation time from the data and sets it to the file/folder at
|
||||
// the specified path.
|
||||
func restoreCreationTime(path string, creationTime *syscall.Filetime) (err error) {
|
||||
pathPointer, err := syscall.UTF16PtrFromString(path)
|
||||
pathPointer, err := syscall.UTF16PtrFromString(fixpath(path))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -223,7 +223,7 @@ func restoreCreationTime(path string, creationTime *syscall.Filetime) (err error
|
|||
// restoreFileAttributes gets the File Attributes from the data and sets them to the file/folder
|
||||
// at the specified path.
|
||||
func restoreFileAttributes(path string, fileAttributes *uint32) (err error) {
|
||||
pathPointer, err := syscall.UTF16PtrFromString(path)
|
||||
pathPointer, err := syscall.UTF16PtrFromString(fixpath(path))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue