Skip to content
This repository was archived by the owner on May 31, 2020. It is now read-only.

Commit c06ce96

Browse files
committed
Adjust errors.Wrap() messages
Signed-off-by: Lehner Florian <[email protected]>
1 parent fde99b0 commit c06ce96

File tree

2 files changed

+29
-23
lines changed

2 files changed

+29
-23
lines changed

datatypes.go

+10-6
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,15 @@ func extractDataElement(r io.Reader, order binary.ByteOrder, dataType, numberOfB
5757
if dataType == MiMatrix {
5858
element, i, err = extractMatrix(r, order)
5959
if err != nil {
60-
return nil, 0, errors.Wrap(err, "extractMatrix() in extractDataElement() failed")
60+
return nil, 0, errors.Wrap(err, "\nextractMatrix() in extractDataElement() failed")
6161
}
6262
return element, i, nil
6363
}
6464

6565
data, err = readMatfBytes(r, order, numberOfBytes)
66+
6667
if err != nil {
67-
return nil, 0, fmt.Errorf("Unable to read %d bytes: %v", numberOfBytes, err)
68+
return nil, 0, errors.Wrap(err, "\nreadMatfBytes() in extractDataElement() failed")
6869
}
6970
for i < numberOfBytes {
7071
switch dataType {
@@ -111,22 +112,25 @@ func extractDataElement(r io.Reader, order binary.ByteOrder, dataType, numberOfB
111112
func extractNumeric(r io.Reader, order binary.ByteOrder) (interface{}, int, error) {
112113
dataType, numberOfBytes, offset, err := extractTag(r, order)
113114
if err != nil {
114-
return nil, 0, errors.Wrap(err, "extractTag() in extractNumeric() failed")
115+
return nil, 0, errors.Wrap(err, "\nextractTag() in extractNumeric() failed")
115116
}
116117

117118
re, _, err := extractDataElement(r, order, int(dataType), int(numberOfBytes))
118119
if err != nil {
119-
return nil, 0, errors.Wrap(err, "extractDataElement() in extractNumeric() failed")
120+
return nil, 0, errors.Wrap(err, "\nextractDataElement() in extractNumeric() failed")
120121
}
121122
return re, offset + int(numberOfBytes), err
122123
}
123124

124125
func extractFieldNames(r io.Reader, order binary.ByteOrder, fieldNameLength, numberOfFields int) ([]string, error) {
125126
var index int
126127
var names []string
128+
if fieldNameLength*numberOfFields == 0 {
129+
return names, nil
130+
}
127131
data, err := readMatfBytes(r, order, fieldNameLength*numberOfFields)
128132
if err != nil {
129-
return []string{}, fmt.Errorf("Unable to read %d bytes: %v", fieldNameLength*numberOfFields, err)
133+
return []string{}, errors.Wrap(err, "\nreadMatfBytes() in extractFieldNames() failed")
130134
}
131135
for ; numberOfFields > 0; numberOfFields-- {
132136
str := string(data[index : index+fieldNameLength])
@@ -139,7 +143,7 @@ func extractFieldNames(r io.Reader, order binary.ByteOrder, fieldNameLength, num
139143
func extractArrayName(r io.Reader, order binary.ByteOrder) (string, int, error) {
140144
_, numberOfBytes, offset, err := extractTag(r, order)
141145
if err != nil {
142-
return "", 0, errors.Wrap(err, "extractTag() in extractArrayName() failed")
146+
return "", 0, errors.Wrap(err, "\nextractTag() in extractArrayName() failed")
143147
}
144148
if numberOfBytes == 0 {
145149
return "", offset, nil

matf.go

+19-17
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func readHeader(mat *Matf, file *os.File) error {
7777
data := make([]byte, 128)
7878
count, err := file.Read(data)
7979
if err != nil {
80-
return errors.Wrap(err, "file.Read() in readHeader() failed")
80+
return errors.Wrap(err, "\nfile.Read() in readHeader() failed")
8181
}
8282

8383
if count != 128 {
@@ -129,6 +129,7 @@ func alignIndex(r io.Reader, order binary.ByteOrder, index int) int {
129129

130130
func extractClass(mat *MatMatrix, r io.Reader, order binary.ByteOrder) (int, error) {
131131
var index int
132+
132133
switch int(mat.Class) {
133134
case MxCellClass:
134135
var content CellPrt
@@ -256,12 +257,13 @@ func extractMatrix(r io.Reader, order binary.ByteOrder) (MatMatrix, int, error)
256257
// Array Flags
257258
_, numberOfBytes, offset, err = extractTag(r, order)
258259
if err != nil {
259-
return MatMatrix{}, 0, err
260+
return MatMatrix{}, 0, errors.Wrap(err, "\nextractTag() in extractMatrix() failed:")
260261
}
261262
index = alignIndex(r, order, index+offset+int(numberOfBytes))
263+
262264
arrayFlags, err := readMatfBytes(r, order, int(numberOfBytes))
263265
if err != nil {
264-
return MatMatrix{}, 0, err
266+
return MatMatrix{}, 0, errors.Wrap(err, "\nreadMatfBytes() in extractMatrix() failed:")
265267
}
266268
matrix.Flags = order.Uint32(arrayFlags)
267269
matrix.Class = matrix.Flags & 0x0F
@@ -270,26 +272,26 @@ func extractMatrix(r io.Reader, order binary.ByteOrder) (MatMatrix, int, error)
270272
// Dimensions Array
271273
dataType, numberOfBytes, offset, err = extractTag(r, order)
272274
if err != nil {
273-
return MatMatrix{}, 0, err
275+
return MatMatrix{}, 0, errors.Wrap(err, "\nextractTag() in extractMatrix() failed:")
274276
}
275277
dims, _, err := extractDataElement(r, order, int(dataType), int(numberOfBytes))
276278
if err != nil {
277-
return MatMatrix{}, 0, err
279+
return MatMatrix{}, 0, errors.Wrap(err, "\nextractDataElement() in extractMatrix() failed:")
278280
}
279281
matrix.Dim, _ = readDimensions(dims)
280282
index = alignIndex(r, order, index+offset+int(numberOfBytes))
281283

282284
// Array Name
283285
arrayName, step, err := extractArrayName(r, order)
284286
if err != nil {
285-
return MatMatrix{}, 0, err
287+
return MatMatrix{}, 0, errors.Wrap(err, "\nextractArrayName() in extractMatrix() failed:")
286288
}
287289
matrix.Name = arrayName
288290
index = alignIndex(r, order, index+step)
289291

290292
steps, err := extractClass(&matrix, r, order)
291293
if err != nil {
292-
return MatMatrix{}, 0, err
294+
return MatMatrix{}, 0, errors.Wrap(err, "\nextractClass() in extractMatrix() failed:")
293295
}
294296
index = alignIndex(r, order, index+steps)
295297

@@ -321,7 +323,7 @@ func decompressData(data []byte) ([]byte, error) {
321323
var out bytes.Buffer
322324
r, err := zlib.NewReader(tmp)
323325
if err != nil {
324-
return []byte{}, errors.Wrap(err, "zlib.NewReader() in decompressData() failed")
326+
return []byte{}, errors.Wrap(err, "\nzlib.NewReader() in decompressData() failed")
325327
}
326328
defer r.Close()
327329
if r != nil {
@@ -343,41 +345,41 @@ func readDataElementField(m *Matf, order binary.ByteOrder) (MatMatrix, error) {
343345
completeBytes = order.Uint32(tag[4:8])
344346
data, err = readBytes(m, int(completeBytes))
345347
if err != nil {
346-
return MatMatrix{}, errors.Wrap(err, "readBytes() in readDataElementField() failed")
348+
return MatMatrix{}, errors.Wrap(err, "\nreadBytes() in readDataElementField() failed")
347349
}
348350

349351
if dataType == uint32(MiCompressed) {
350352
plain, err := decompressData(data[:completeBytes])
351353
if err != nil {
352-
return MatMatrix{}, errors.Wrap(err, "decompressData() in readDataElementField() failed")
354+
return MatMatrix{}, errors.Wrap(err, "\ndecompressData() in readDataElementField() failed")
353355
}
354356
dataType = order.Uint32(plain[:4])
355357
completeBytes = order.Uint32(plain[4:8])
356358
if err != nil {
357-
return MatMatrix{}, errors.Wrap(err, "extractTag() in readDataElementField() failed")
359+
return MatMatrix{}, errors.Wrap(err, "\nextractTag() in readDataElementField() failed")
358360
}
359-
data = plain
361+
data = plain[8:]
360362
}
361363

362364
tmpfile, err := ioutil.TempFile("", "matf")
363365
if err != nil {
364-
return MatMatrix{}, errors.Wrap(err, "ioutil.TempFile() in readDataElementField() failed")
366+
return MatMatrix{}, errors.Wrap(err, "\nioutil.TempFile() in readDataElementField() failed")
365367
}
366368

367369
defer func() {
368370
tmpfile.Close()
369371
os.Remove(tmpfile.Name())
370372
}()
371373

372-
if _, err := tmpfile.Write(data); err != nil {
373-
return MatMatrix{}, errors.Wrap(err, "os.Write() in readDataElementField() failed")
374+
if _, err = tmpfile.Write(data); err != nil {
375+
return MatMatrix{}, errors.Wrap(err, "\nos.Write() in readDataElementField() failed")
374376
}
375377
tmpfile.Seek(0, 0)
376378
r := bufio.NewReader(tmpfile)
377379

378380
element, i, err := extractDataElement(r, order, int(dataType), int(completeBytes))
379381
if err != nil {
380-
return MatMatrix{}, errors.Wrap(err, "extractDataElement() in readDataElementField() failed")
382+
return MatMatrix{}, errors.Wrap(err, "\nextractDataElement() in readDataElementField() failed")
381383
}
382384
if int(dataType) == MiMatrix {
383385
mat = element.(MatMatrix)
@@ -411,7 +413,7 @@ func Open(file string) (*Matf, error) {
411413

412414
err = readHeader(mat, f)
413415
if err != nil {
414-
return nil, errors.Wrap(err, "readHeader() in Open() failed")
416+
return nil, errors.Wrap(err, "\nreadHeader() in Open() failed")
415417
}
416418

417419
return mat, nil

0 commit comments

Comments
 (0)