Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
konoui committed Dec 20, 2024
1 parent 961f1a6 commit 0c6f96e
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 16 deletions.
38 changes: 22 additions & 16 deletions pkg/ar/ar.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,32 +81,38 @@ func (r *Iter) Next() iter.Seq2[*File, error] {
return func(yield func(*File, error) bool) {
cur := int64(len(MagicHeader))
for {
hdr, err := readHeader(r.sr, cur)
cur += headerSize
f, err := load(r.sr, cur)
if errors.Is(err, io.EOF) {
return
}
if err != nil {
if !yield(nil, err) {
return
}
}

sr := io.NewSectionReader(r.sr,
cur+hdr.nameSize, hdr.Size-hdr.nameSize)
f := &File{SectionReader: sr, Header: *hdr}
cur += hdr.Size

if !yield(f, nil) {
if !yield(f, err) {
return
}
if err != nil {
return
}
cur += f.Header.Size + headerSize
}
}
}

func readHeader(sr *io.SectionReader, start int64) (*Header, error) {
func load(sr *io.SectionReader, off int64) (*File, error) {
hdr, err := readHeader(sr, off)
if err != nil {
return nil, err
}

filesr := io.NewSectionReader(sr,
off+headerSize+hdr.nameSize,
hdr.Size-hdr.nameSize)
f := &File{SectionReader: filesr, Header: *hdr}
return f, nil
}

func readHeader(sr *io.SectionReader, off int64) (*Header, error) {
var hdrBuf [headerSize]byte
hdrsr := io.NewSectionReader(sr, start, headerSize)
hdrsr := io.NewSectionReader(sr, off, headerSize)
n, err := io.ReadFull(hdrsr, hdrBuf[:])
if err != nil {
return nil, err
Expand All @@ -129,7 +135,7 @@ func readHeader(sr *io.SectionReader, start int64) (*Header, error) {
return nil, err
}

namesr := io.NewSectionReader(sr, start+headerSize, parsedSize)
namesr := io.NewSectionReader(sr, off+headerSize, parsedSize)
nameBuf := make([]byte, parsedSize)
if _, err := io.ReadFull(namesr, nameBuf); err != nil {
return nil, err
Expand Down
3 changes: 3 additions & 0 deletions pkg/lmacho/fatiter.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@ func (r *FatIter) Next() iter.Seq2[*FatArch, error] {
if !yield(fa, err) {
return
}
if err != nil {
return
}
}
}
}
Expand Down

0 comments on commit 0c6f96e

Please sign in to comment.