forked from TrueCloudLab/restic
e9a21c1dc6
The current code returns io.ErrUnexpectedEOF, but it is the normal, expected behaviour of the function LoadAll() to load until the item is completely loaded. Therefore, the io.ErrUnexpectedEOF is not returned to the caller.
25 lines
634 B
Go
25 lines
634 B
Go
package backend
|
|
|
|
import "io"
|
|
|
|
// LoadAll reads all data stored in the backend for the handle. The buffer buf
|
|
// is resized to accomodate all data in the blob. Errors returned by be.Load()
|
|
// are passed on, except io.ErrUnexpectedEOF is silenced and nil returned
|
|
// instead, since it means this function is working properly.
|
|
func LoadAll(be Backend, h Handle, buf []byte) ([]byte, error) {
|
|
fi, err := be.Stat(h)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if fi.Size > int64(len(buf)) {
|
|
buf = make([]byte, int(fi.Size))
|
|
}
|
|
|
|
n, err := be.Load(h, buf, 0)
|
|
if err == io.ErrUnexpectedEOF {
|
|
err = nil
|
|
}
|
|
buf = buf[:n]
|
|
return buf, err
|
|
}
|