func GetFileFromPosition()

in internal/files/logtail.go [41:67]


func GetFileFromPosition(path string, position int64) ([]byte, error) {
	f, err := os.Open(path)
	if err != nil && os.IsNotExist(err) {
		return nil, nil
	} else if err != nil {
		return nil, errors.Wrap(err, "error opening file")
	}
	defer f.Close()

	fi, err := f.Stat()
	if err != nil {
		return nil, errors.Wrap(err, "error retrieving file info")
	}
	size := fi.Size()
	if position >= size {
		// No content after position
		return make([]byte, 0), nil
	}

	_, err = f.Seek(position, io.SeekStart)
	if err != nil {
		return nil, errors.Wrapf(err, "error seeking file: %s, offset=%d", path, position)
	}

	b, err := io.ReadAll(io.LimitReader(f, size-position))
	return b, errors.Wrap(err, "error reading from file: "+path)
}