denser error handling
This commit is contained in:
parent
2ece18bf05
commit
0dc1119122
|
@ -60,11 +60,7 @@ func main() {
|
|||
}
|
||||
|
||||
func metaflac(path string) (err error) {
|
||||
err = list(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
return list(path)
|
||||
}
|
||||
|
||||
func list(path string) (err error) {
|
||||
|
|
6
flac.go
6
flac.go
|
@ -70,8 +70,7 @@ func New(r io.Reader) (stream *Stream, err error) {
|
|||
if err != nil && err != meta.ErrReservedType {
|
||||
return stream, err
|
||||
}
|
||||
err = block.Skip()
|
||||
if err != nil {
|
||||
if err = block.Skip(); err != nil {
|
||||
return stream, err
|
||||
}
|
||||
isLast = block.IsLast
|
||||
|
@ -137,8 +136,7 @@ func Parse(r io.Reader) (stream *Stream, err error) {
|
|||
// the specification.
|
||||
//
|
||||
// ref: https://www.xiph.org/flac/format.html#format_overview
|
||||
err = block.Skip()
|
||||
if err != nil {
|
||||
if err = block.Skip(); err != nil {
|
||||
return stream, err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -132,8 +132,7 @@ func (frame *Frame) Parse() error {
|
|||
|
||||
// 2 bytes: CRC-16 checksum.
|
||||
var want uint16
|
||||
err = binary.Read(frame.r, binary.BigEndian, &want)
|
||||
if err != nil {
|
||||
if err = binary.Read(frame.r, binary.BigEndian, &want); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
got := frame.crc.Sum16()
|
||||
|
@ -482,8 +481,7 @@ func (frame *Frame) parseHeader() error {
|
|||
|
||||
// 1 byte: CRC-8 checksum.
|
||||
var want uint8
|
||||
err = binary.Read(frame.hr, binary.BigEndian, &want)
|
||||
if err != nil {
|
||||
if err = binary.Read(frame.hr, binary.BigEndian, &want); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
got := h.Sum8()
|
||||
|
|
|
@ -31,8 +31,7 @@ type Subframe struct {
|
|||
func (frame *Frame) parseSubframe(bps uint) (subframe *Subframe, err error) {
|
||||
// Parse subframe header.
|
||||
subframe = new(Subframe)
|
||||
err = subframe.parseHeader(frame.br)
|
||||
if err != nil {
|
||||
if err = subframe.parseHeader(frame.br); err != nil {
|
||||
return subframe, err
|
||||
}
|
||||
// Adjust bps of subframe for wasted bits-per-sample.
|
||||
|
@ -326,8 +325,7 @@ func (subframe *Subframe) decodeFIR(br *bits.Reader, bps uint) error {
|
|||
}
|
||||
|
||||
// Decode subframe residuals.
|
||||
err = subframe.decodeResidual(br)
|
||||
if err != nil {
|
||||
if err = subframe.decodeResidual(br); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -422,8 +420,7 @@ func (subframe *Subframe) decodeRicePart(br *bits.Reader, paramSize uint) error
|
|||
|
||||
// Decode the Rice encoded residuals of the partition.
|
||||
for j := 0; j < nsamples; j++ {
|
||||
err = subframe.decodeRiceResidual(br, param)
|
||||
if err != nil {
|
||||
if err = subframe.decodeRiceResidual(br, param); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,15 +39,13 @@ func (block *Block) parseCueSheet() error {
|
|||
cs.MCN = stringFromSZ(buf)
|
||||
|
||||
// 64 bits: NLeadInSamples.
|
||||
err = binary.Read(block.lr, binary.BigEndian, &cs.NLeadInSamples)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &cs.NLeadInSamples); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
|
||||
// 1 bit: IsCompactDisc.
|
||||
var x uint8
|
||||
err = binary.Read(block.lr, binary.BigEndian, &x)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
// mask = 10000000
|
||||
|
@ -69,8 +67,7 @@ func (block *Block) parseCueSheet() error {
|
|||
|
||||
// Parse cue sheet tracks.
|
||||
// 8 bits: (number of tracks)
|
||||
err = binary.Read(block.lr, binary.BigEndian, &x)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
if x < 1 {
|
||||
|
@ -86,8 +83,7 @@ func (block *Block) parseCueSheet() error {
|
|||
for i := range cs.Tracks {
|
||||
// 64 bits: Offset.
|
||||
track := &cs.Tracks[i]
|
||||
err = binary.Read(block.lr, binary.BigEndian, &track.Offset)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &track.Offset); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
if cs.IsCompactDisc && track.Offset%588 != 0 {
|
||||
|
@ -95,8 +91,7 @@ func (block *Block) parseCueSheet() error {
|
|||
}
|
||||
|
||||
// 8 bits: Num.
|
||||
err = binary.Read(block.lr, binary.BigEndian, &track.Num)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &track.Num); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
if _, ok := uniq[track.Num]; ok {
|
||||
|
@ -131,8 +126,7 @@ func (block *Block) parseCueSheet() error {
|
|||
track.ISRC = stringFromSZ(buf)
|
||||
|
||||
// 1 bit: IsAudio.
|
||||
err = binary.Read(block.lr, binary.BigEndian, &x)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
// mask = 10000000
|
||||
|
@ -160,8 +154,7 @@ func (block *Block) parseCueSheet() error {
|
|||
|
||||
// Parse indicies.
|
||||
// 8 bits: (number of indicies)
|
||||
err = binary.Read(block.lr, binary.BigEndian, &x)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
if x < 1 {
|
||||
|
@ -174,14 +167,12 @@ func (block *Block) parseCueSheet() error {
|
|||
for i := range track.Indicies {
|
||||
index := &track.Indicies[i]
|
||||
// 64 bits: Offset.
|
||||
err = binary.Read(block.lr, binary.BigEndian, &index.Offset)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &index.Offset); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
|
||||
// 8 bits: Num.
|
||||
err = binary.Read(block.lr, binary.BigEndian, &index.Num)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &index.Num); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
|
||||
|
|
|
@ -56,8 +56,7 @@ type Block struct {
|
|||
// ignore it.
|
||||
func New(r io.Reader) (block *Block, err error) {
|
||||
block = new(Block)
|
||||
err = block.parseHeader(r)
|
||||
if err != nil {
|
||||
if err = block.parseHeader(r); err != nil {
|
||||
return block, err
|
||||
}
|
||||
block.lr = io.LimitReader(r, block.Length)
|
||||
|
@ -71,8 +70,7 @@ func Parse(r io.Reader) (block *Block, err error) {
|
|||
if err != nil {
|
||||
return block, err
|
||||
}
|
||||
err = block.Parse()
|
||||
if err != nil {
|
||||
if err = block.Parse(); err != nil {
|
||||
return block, err
|
||||
}
|
||||
return block, nil
|
||||
|
|
|
@ -62,8 +62,7 @@ func (block *Block) parsePicture() error {
|
|||
|
||||
// 32 bits: (MIME type length).
|
||||
var x uint32
|
||||
err = binary.Read(block.lr, binary.BigEndian, &x)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
|
||||
|
@ -75,8 +74,7 @@ func (block *Block) parsePicture() error {
|
|||
pic.MIME = string(buf)
|
||||
|
||||
// 32 bits: (description length).
|
||||
err = binary.Read(block.lr, binary.BigEndian, &x)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
|
||||
|
@ -88,32 +86,27 @@ func (block *Block) parsePicture() error {
|
|||
pic.Desc = string(buf)
|
||||
|
||||
// 32 bits: Width.
|
||||
err = binary.Read(block.lr, binary.BigEndian, &pic.Width)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &pic.Width); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
|
||||
// 32 bits: Height.
|
||||
err = binary.Read(block.lr, binary.BigEndian, &pic.Height)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &pic.Height); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
|
||||
// 32 bits: Depth.
|
||||
err = binary.Read(block.lr, binary.BigEndian, &pic.Depth)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &pic.Depth); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
|
||||
// 32 bits: NPalColors.
|
||||
err = binary.Read(block.lr, binary.BigEndian, &pic.NPalColors)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &pic.NPalColors); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
|
||||
// 32 bits: (data length).
|
||||
err = binary.Read(block.lr, binary.BigEndian, &x)
|
||||
if err != nil {
|
||||
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
|
||||
return unexpected(err)
|
||||
}
|
||||
if x == 0 {
|
||||
|
|
Loading…
Reference in a new issue