24 lines
427 B
Go
24 lines
427 B
Go
|
package missinggo
|
||
|
|
||
|
import "io"
|
||
|
|
||
|
type SectionWriter struct {
|
||
|
w io.WriterAt
|
||
|
off, len int64
|
||
|
}
|
||
|
|
||
|
func NewSectionWriter(w io.WriterAt, off, len int64) *SectionWriter {
|
||
|
return &SectionWriter{w, off, len}
|
||
|
}
|
||
|
|
||
|
func (me *SectionWriter) WriteAt(b []byte, off int64) (n int, err error) {
|
||
|
if off >= me.len {
|
||
|
err = io.EOF
|
||
|
return
|
||
|
}
|
||
|
if off+int64(len(b)) > me.len {
|
||
|
b = b[:me.len-off]
|
||
|
}
|
||
|
return me.w.WriteAt(b, me.off+off)
|
||
|
}
|