azureblob: fix RangeOption support in Open #1825
This commit is contained in:
parent
8653944a6d
commit
9c45125271
1 changed files with 10 additions and 3 deletions
|
@ -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() {
|
||||||
|
|
Loading…
Reference in a new issue