func ReadStatFromMetadata()

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
}