mirror of
https://github.com/restic/restic.git
synced 2024-08-28 07:07:22 +02:00
37 lines
736 B
Go
37 lines
736 B
Go
|
// +build !windows,!darwin,!freebsd
|
||
|
|
||
|
package fs
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"os"
|
||
|
"syscall"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
// extendedStat extracts info into an ExtendedFileInfo for unix based operating systems.
|
||
|
func extendedStat(fi os.FileInfo) ExtendedFileInfo {
|
||
|
s, ok := fi.Sys().(*syscall.Stat_t)
|
||
|
if !ok {
|
||
|
panic(fmt.Sprintf("conversion to syscall.Stat_t failed, type is %T", fi.Sys()))
|
||
|
}
|
||
|
|
||
|
extFI := ExtendedFileInfo{
|
||
|
FileInfo: fi,
|
||
|
DeviceID: uint64(s.Dev),
|
||
|
Inode: s.Ino,
|
||
|
Links: uint64(s.Nlink),
|
||
|
UID: s.Uid,
|
||
|
GID: s.Gid,
|
||
|
Device: uint64(s.Rdev),
|
||
|
BlockSize: int64(s.Blksize),
|
||
|
Blocks: s.Blocks,
|
||
|
Size: s.Size,
|
||
|
|
||
|
AccessTime: time.Unix(s.Atim.Unix()),
|
||
|
ModTime: time.Unix(s.Mtim.Unix()),
|
||
|
}
|
||
|
|
||
|
return extFI
|
||
|
}
|