in common/unixStatAdapter.go [165:291]
func ReadStatFromMetadata(metadata Metadata, contentLength int64) (UnixStatAdapter, error) {
s := UnixStatContainer{size: uint64(contentLength)}
if mask, ok := TryReadMetadata(metadata, LINUXStatxMaskMeta); ok {
m, err := strconv.ParseUint(*mask, 10, 32)
if err != nil {
return s, err
}
s.statx = true
s.mask = uint32(m)
}
// cover additional statx properties here
if attr, ok := TryReadMetadata(metadata, LINUXAttributeMeta); ok {
a, err := strconv.ParseUint(*attr, 10, 64)
if err != nil {
return s, err
}
s.attributes = a
}
if attr, ok := TryReadMetadata(metadata, LINUXAttributeMaskMeta); ok {
a, err := strconv.ParseUint(*attr, 10, 64)
if err != nil {
return s, err
}
s.attributesMask = a
}
if btime, ok := TryReadMetadata(metadata, LINUXBTimeMeta); ok {
b, err := strconv.ParseInt(*btime, 10, 64)
if err != nil {
return s, err
}
s.birthTime = time.Unix(0, b)
}
// base stat properties
if nlink, ok := TryReadMetadata(metadata, POSIXNlinkMeta); ok {
n, err := strconv.ParseUint(*nlink, 10, 64)
if err != nil {
return s, err
}
s.numLinks = n
}
if owner, ok := TryReadMetadata(metadata, POSIXOwnerMeta); ok {
o, err := strconv.ParseUint(*owner, 10, 32)
if err != nil {
return s, err
}
s.ownerUID = uint32(o)
}
if group, ok := TryReadMetadata(metadata, POSIXGroupMeta); ok {
g, err := strconv.ParseUint(*group, 10, 32)
if err != nil {
return s, err
}
s.groupGID = uint32(g)
}
if mode, ok := TryReadMetadata(metadata, POSIXModeMeta); ok {
m, err := strconv.ParseUint(*mode, 10, 32)
if err != nil {
return s, err
}
s.mode = uint32(m)
}
if inode, ok := TryReadMetadata(metadata, POSIXINodeMeta); ok {
ino, err := strconv.ParseUint(*inode, 10, 64)
if err != nil {
return s, err
}
s.iNode = ino
}
if dev, ok := TryReadMetadata(metadata, POSIXDevMeta); ok {
d, err := strconv.ParseUint(*dev, 10, 64)
if err != nil {
return s, err
}
s.devID = d
}
if rdev, ok := TryReadMetadata(metadata, POSIXRDevMeta); ok {
rd, err := strconv.ParseUint(*rdev, 10, 64)
if err != nil {
return s, err
}
s.repDevID = rd
}
if atime, ok := TryReadMetadata(metadata, POSIXATimeMeta); ok {
at, err := strconv.ParseInt(*atime, 10, 64)
if err != nil {
return s, err
}
s.accessTime = time.Unix(0, at)
}
if mtime, ok := TryReadMetadata(metadata, POSIXModTimeMeta); ok {
mt, err := strconv.ParseInt(*mtime, 10, 64)
if err != nil {
return s, err
}
s.modTime = time.Unix(0, mt)
}
if ctime, ok := TryReadMetadata(metadata, POSIXCTimeMeta); ok {
ct, err := strconv.ParseInt(*ctime, 10, 64)
if err != nil {
return s, err
}
s.changeTime = time.Unix(0, ct)
}
return s, nil
}