azureblob: fix RangeOption support in Open #1825

This commit is contained in:
Nick Craig-Wood 2018-01-21 17:10:10 +00:00
parent 8653944a6d
commit 9c45125271

View file

@ -854,14 +854,21 @@ func (o *Object) Open(options ...fs.OpenOption) (in io.ReadCloser, err error) {
for _, option := range options { for _, option := range options {
switch x := option.(type) { switch x := option.(type) {
case *fs.RangeOption: case *fs.RangeOption:
start, end := x.Start, x.End
if end < 0 {
end = 0
}
if start < 0 {
start = o.size - end
end = 0
}
getBlobRangeOptions.Range = &storage.BlobRange{ getBlobRangeOptions.Range = &storage.BlobRange{
Start: uint64(x.Start), Start: uint64(start),
End: uint64(x.End), End: uint64(end),
} }
case *fs.SeekOption: case *fs.SeekOption:
getBlobRangeOptions.Range = &storage.BlobRange{ getBlobRangeOptions.Range = &storage.BlobRange{
Start: uint64(x.Offset), Start: uint64(x.Offset),
End: uint64(o.size),
} }
default: default:
if option.Mandatory() { if option.Mandatory() {