Skip to content

Commit fec6e86

Browse files
authored
Merge pull request #37 from stevenh/fix/errors
fix: use wrapped errors
2 parents ee55035 + dd60005 commit fec6e86

File tree

8 files changed

+180
-161
lines changed

8 files changed

+180
-161
lines changed

cmd/wavtagger/main.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ func main() {
5959
func tagFile(path string) error {
6060
in, err := os.Open(path)
6161
if err != nil {
62-
return fmt.Errorf("failed to open %s - %v", path, err)
62+
return fmt.Errorf("failed to open %s - %w", path, err)
6363
}
6464
d := wav.NewDecoder(in)
6565
buf, err := d.FullPCMBuffer()
6666
if err != nil {
67-
return fmt.Errorf("couldn't read buffer %s %v", path, err)
67+
return fmt.Errorf("couldn't read buffer %s %w", path, err)
6868
}
6969
in.Close()
7070

@@ -74,7 +74,7 @@ func tagFile(path string) error {
7474

7575
out, err := os.Create(outPath)
7676
if err != nil {
77-
return fmt.Errorf("couldn't create %s %v", outPath, err)
77+
return fmt.Errorf("couldn't create %s %w", outPath, err)
7878
}
7979
defer out.Close()
8080

@@ -84,7 +84,7 @@ func tagFile(path string) error {
8484
buf.Format.NumChannels,
8585
int(d.WavAudioFormat))
8686
if err := e.Write(buf); err != nil {
87-
return fmt.Errorf("failed to write audio buffer - %v", err)
87+
return fmt.Errorf("failed to write audio buffer - %w", err)
8888
}
8989
e.Metadata = &wav.Metadata{}
9090
if *flagArtist != "" {
@@ -115,7 +115,7 @@ func tagFile(path string) error {
115115
e.Metadata.Genre = *flagGenre
116116
}
117117
if err := e.Close(); err != nil {
118-
return fmt.Errorf("failed to close %s - %v", outPath, err)
118+
return fmt.Errorf("failed to close %s - %w", outPath, err)
119119
}
120120
fmt.Println("Tagged file available at", outPath)
121121

cue_chunk.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@ func DecodeCueChunk(d *Decoder, ch *riff.Chunk) error {
6262
buf := make([]byte, ch.Size)
6363
var err error
6464
if _, err = ch.Read(buf); err != nil {
65-
return fmt.Errorf("failed to read the CUE chunk - %v", err)
65+
return fmt.Errorf("failed to read the CUE chunk - %w", err)
6666
}
6767
r := bytes.NewReader(buf)
6868
var nbrCues uint32
6969
if err := binary.Read(r, binary.LittleEndian, &nbrCues); err != nil {
70-
return fmt.Errorf("failed to read the number of cues - %v", err)
70+
return fmt.Errorf("failed to read the number of cues - %w", err)
7171
}
7272
if nbrCues > 0 {
7373
if d.Metadata == nil {

decoder.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -98,15 +98,15 @@ func (d *Decoder) PCMLen() int64 {
9898

9999
// Err returns the first non-EOF error that was encountered by the Decoder.
100100
func (d *Decoder) Err() error {
101-
if d.err == io.EOF {
101+
if errors.Is(d.err, io.EOF) {
102102
return nil
103103
}
104104
return d.err
105105
}
106106

107107
// EOF returns positively if the underlying reader reached the end of file.
108108
func (d *Decoder) EOF() bool {
109-
if d == nil || d.err == io.EOF {
109+
if d == nil || errors.Is(d.err, io.EOF) {
110110
return true
111111
}
112112
return false
@@ -161,7 +161,7 @@ func (d *Decoder) ReadMetadata() {
161161
switch chunk.ID {
162162
case CIDList:
163163
if err = DecodeListChunk(d, chunk); err != nil {
164-
if err != io.EOF {
164+
if !errors.Is(err, io.EOF) {
165165
d.err = err
166166
}
167167
}
@@ -171,13 +171,13 @@ func (d *Decoder) ReadMetadata() {
171171
}
172172
case CIDSmpl:
173173
if err = DecodeSamplerChunk(d, chunk); err != nil {
174-
if err != io.EOF {
174+
if !errors.Is(err, io.EOF) {
175175
d.err = err
176176
}
177177
}
178178
case CIDCue:
179179
if err = DecodeCueChunk(d, chunk); err != nil {
180-
if err != io.EOF {
180+
if !errors.Is(err, io.EOF) {
181181
d.err = err
182182
}
183183
}
@@ -255,7 +255,7 @@ func (d *Decoder) FullPCMBuffer() (*audio.IntBuffer, error) {
255255
sampleBufData := make([]byte, bytesPerSample)
256256
decodeF, err := sampleDecodeFunc(int(d.BitDepth))
257257
if err != nil {
258-
return nil, fmt.Errorf("could not get sample decode func %v", err)
258+
return nil, fmt.Errorf("could not get sample decode func %w", err)
259259
}
260260

261261
i := 0
@@ -272,7 +272,7 @@ func (d *Decoder) FullPCMBuffer() (*audio.IntBuffer, error) {
272272
}
273273
buf.Data = buf.Data[:i]
274274

275-
if err == io.EOF {
275+
if errors.Is(err, io.EOF) {
276276
err = nil
277277
}
278278

@@ -303,7 +303,7 @@ func (d *Decoder) PCMBuffer(buf *audio.IntBuffer) (n int, err error) {
303303
buf.SourceBitDepth = int(d.BitDepth)
304304
decodeF, err := sampleDecodeFunc(int(d.BitDepth))
305305
if err != nil {
306-
return 0, fmt.Errorf("could not get sample decode func %v", err)
306+
return 0, fmt.Errorf("could not get sample decode func %w", err)
307307
}
308308

309309
bPerSample := bytesPerSample(int(d.BitDepth))
@@ -314,7 +314,7 @@ func (d *Decoder) PCMBuffer(buf *audio.IntBuffer) (n int, err error) {
314314
var m int
315315
m, err = d.PCMChunk.R.Read(tmpBuf)
316316
if err != nil {
317-
if err == io.EOF {
317+
if errors.Is(err, io.EOF) {
318318
return m, nil
319319
}
320320
return m, err
@@ -342,7 +342,7 @@ func (d *Decoder) PCMBuffer(buf *audio.IntBuffer) (n int, err error) {
342342
}
343343
}
344344
buf.Format = format
345-
if err == io.EOF {
345+
if errors.Is(err, io.EOF) {
346346
err = nil
347347
}
348348

encoder.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -150,24 +150,24 @@ func (e *Encoder) writeHeader() error {
150150
}
151151
// num channels
152152
if err := e.AddLE(uint16(e.NumChans)); err != nil {
153-
return fmt.Errorf("error encoding the number of channels - %v", err)
153+
return fmt.Errorf("error encoding the number of channels - %w", err)
154154
}
155155
// samplerate
156156
if err := e.AddLE(uint32(e.SampleRate)); err != nil {
157-
return fmt.Errorf("error encoding the sample rate - %v", err)
157+
return fmt.Errorf("error encoding the sample rate - %w", err)
158158
}
159159
blockAlign := e.NumChans * e.BitDepth / 8
160160
// avg bytes per sec
161161
if err := e.AddLE(uint32(e.SampleRate * blockAlign)); err != nil {
162-
return fmt.Errorf("error encoding the avg bytes per sec - %v", err)
162+
return fmt.Errorf("error encoding the avg bytes per sec - %w", err)
163163
}
164164
// block align
165165
if err := e.AddLE(uint16(blockAlign)); err != nil {
166166
return err
167167
}
168168
// bits per sample
169169
if err := e.AddLE(uint16(e.BitDepth)); err != nil {
170-
return fmt.Errorf("error encoding bits per sample - %v", err)
170+
return fmt.Errorf("error encoding bits per sample - %w", err)
171171
}
172172

173173
return nil
@@ -185,14 +185,14 @@ func (e *Encoder) Write(buf *audio.IntBuffer) error {
185185
if !e.pcmChunkStarted {
186186
// sound header
187187
if err := e.AddLE(riff.DataFormatID); err != nil {
188-
return fmt.Errorf("error encoding sound header %v", err)
188+
return fmt.Errorf("error encoding sound header %w", err)
189189
}
190190
e.pcmChunkStarted = true
191191

192192
// write a temporary chunksize
193193
e.pcmChunkSizePos = e.WrittenBytes
194194
if err := e.AddLE(uint32(42)); err != nil {
195-
return fmt.Errorf("%v when writing wav data chunk size header", err)
195+
return fmt.Errorf("%w when writing wav data chunk size header", err)
196196
}
197197
}
198198

@@ -207,14 +207,14 @@ func (e *Encoder) WriteFrame(value interface{}) error {
207207
if !e.pcmChunkStarted {
208208
// sound header
209209
if err := e.AddLE(riff.DataFormatID); err != nil {
210-
return fmt.Errorf("error encoding sound header %v", err)
210+
return fmt.Errorf("error encoding sound header %w", err)
211211
}
212212
e.pcmChunkStarted = true
213213

214214
// write a temporary chunksize
215215
e.pcmChunkSizePos = e.WrittenBytes
216216
if err := e.AddLE(uint32(42)); err != nil {
217-
return fmt.Errorf("%v when writing wav data chunk size header", err)
217+
return fmt.Errorf("%w when writing wav data chunk size header", err)
218218
}
219219
}
220220

@@ -225,10 +225,10 @@ func (e *Encoder) WriteFrame(value interface{}) error {
225225
func (e *Encoder) writeMetadata() error {
226226
chunkData := encodeInfoChunk(e)
227227
if err := e.AddBE(CIDList); err != nil {
228-
return fmt.Errorf("failed to write the LIST chunk ID: %s", err)
228+
return fmt.Errorf("failed to write the LIST chunk ID: %w", err)
229229
}
230230
if err := e.AddLE(uint32(len(chunkData))); err != nil {
231-
return fmt.Errorf("failed to write the LIST chunk size: %s", err)
231+
return fmt.Errorf("failed to write the LIST chunk size: %w", err)
232232
}
233233
return e.AddBE(chunkData)
234234
}
@@ -244,7 +244,7 @@ func (e *Encoder) Close() error {
244244
// metadata chunks
245245
if e.Metadata != nil {
246246
if err := e.writeMetadata(); err != nil {
247-
return fmt.Errorf("failed to write metadata - %v", err)
247+
return fmt.Errorf("failed to write metadata - %w", err)
248248
}
249249
}
250250

@@ -253,7 +253,7 @@ func (e *Encoder) Close() error {
253253
return err
254254
}
255255
if err := e.AddLE(uint32(e.WrittenBytes) - 8); err != nil {
256-
return fmt.Errorf("%v when writing the total written bytes", err)
256+
return fmt.Errorf("%w when writing the total written bytes", err)
257257
}
258258

259259
// rewrite the audio chunk length header
@@ -263,7 +263,7 @@ func (e *Encoder) Close() error {
263263
}
264264
chunksize := uint32((int(e.BitDepth) / 8) * int(e.NumChans) * e.frames)
265265
if err := e.AddLE(uint32(chunksize)); err != nil {
266-
return fmt.Errorf("%v when writing wav data chunk size header", err)
266+
return fmt.Errorf("%w when writing wav data chunk size header", err)
267267
}
268268
}
269269

0 commit comments

Comments
 (0)