-func (me data) WriteSectionTo(w io.Writer, off, n int64) (written int64, err error) {
- for _, fi := range me.info.UpvertedFiles() {
- if off >= fi.Length {
- off -= fi.Length
- continue
- }
- n1 := fi.Length - off
- if n1 > n {
- n1 = n
- }
- var f *os.File
- f, err = os.Open(me.fileInfoName(fi))
- if os.IsNotExist(err) {
- err = io.ErrUnexpectedEOF
- }
- if err != nil {
- return
- }
- var w1 int64
- w1, err = io.Copy(w, io.NewSectionReader(f, off, n1))
- f.Close()
- written += w1
- if w1 != n1 {
- if err == nil || err == io.EOF {
- err = io.ErrUnexpectedEOF
- }
- return
- } else {
- err = nil
- }
- off = 0
- n -= n1
- if n == 0 {
- return
- }
- }
- err = io.EOF
- return
-}
-