Skip to content

Commit

Permalink
Simplified reading.
Browse files Browse the repository at this point in the history
  • Loading branch information
icza committed Jul 26, 2017
1 parent 797cc08 commit 2663426
Showing 1 changed file with 15 additions and 15 deletions.
30 changes: 15 additions & 15 deletions mpq.go
Original file line number Diff line number Diff line change
Expand Up @@ -278,20 +278,20 @@ func (m *MPQ) diveIn() (*MPQ, error) {
return nil, err
}

binread := func(r io.Reader, order binary.ByteOrder, data interface{}) error {
read := func(data interface{}) error {
if err != nil {
return err // No-op if we already have an error
}
err = binary.Read(r, order, data)
err = binary.Read(in, binary.LittleEndian, data)
return err
}

// Optionally the MPQ starts with a User Data section
var headerOffset int64
if magic == userDataMagic {
u := userData{}
binread(in, binary.LittleEndian, &u.size)
binread(in, binary.LittleEndian, &u.headerOffset)
read(&u.size)
read(&u.headerOffset)
if err == nil {
u.data = make([]byte, u.size)
_, err = io.ReadFull(in, u.data)
Expand All @@ -318,23 +318,23 @@ func (m *MPQ) diveIn() (*MPQ, error) {
}
h := header{}

binread(in, binary.LittleEndian, &h.size)
binread(in, binary.LittleEndian, &h.archiveSize)
binread(in, binary.LittleEndian, &h.formatVersion)
binread(in, binary.LittleEndian, &h.sectorSizeShift)
binread(in, binary.LittleEndian, &h.hashTableOffset)
binread(in, binary.LittleEndian, &h.blockTableOffset)
binread(in, binary.LittleEndian, &h.hashTableEntries)
binread(in, binary.LittleEndian, &h.blockTableEntries)
read(&h.size)
read(&h.archiveSize)
read(&h.formatVersion)
read(&h.sectorSizeShift)
read(&h.hashTableOffset)
read(&h.blockTableOffset)
read(&h.hashTableEntries)
read(&h.blockTableEntries)

if err != nil {
return nil, ErrInvalidArchive
}

if h.formatVersion > 0 {
binread(in, binary.LittleEndian, &h.extendedBlockTableOffset)
binread(in, binary.LittleEndian, &h.hashTableOffsetHigh)
binread(in, binary.LittleEndian, &h.blockTableOffsetHigh)
read(&h.extendedBlockTableOffset)
read(&h.hashTableOffsetHigh)
read(&h.blockTableOffsetHigh)
}

if err != nil {
Expand Down

0 comments on commit 2663426

Please sign in to comment.