mirror of
https://github.com/rclone/rclone.git
synced 2024-12-11 19:53:46 +08:00
35 lines
823 B
Go
35 lines
823 B
Go
|
//go:build windows
|
||
|
// +build windows
|
||
|
|
||
|
package local
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"syscall"
|
||
|
"time"
|
||
|
|
||
|
"github.com/rclone/rclone/fs"
|
||
|
)
|
||
|
|
||
|
// Read the metadata from the file into metadata where possible
|
||
|
func (o *Object) readMetadataFromFile(m *fs.Metadata) (err error) {
|
||
|
info, err := o.fs.lstat(o.path)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
stat, ok := info.Sys().(*syscall.Win32FileAttributeData)
|
||
|
if !ok {
|
||
|
fs.Debugf(o, "didn't return Win32FileAttributeData as expected")
|
||
|
return nil
|
||
|
}
|
||
|
// FIXME do something with stat.FileAttributes ?
|
||
|
m.Set("mode", fmt.Sprintf("%0o", info.Mode()))
|
||
|
setTime := func(key string, t syscall.Filetime) {
|
||
|
m.Set(key, time.Unix(0, t.Nanoseconds()).Format(metadataTimeFormat))
|
||
|
}
|
||
|
setTime("atime", stat.LastAccessTime)
|
||
|
setTime("mtime", stat.LastWriteTime)
|
||
|
setTime("btime", stat.CreationTime)
|
||
|
return nil
|
||
|
}
|