@@ -77,7 +77,7 @@ func readHeader(mat *Matf, file *os.File) error {
77
77
data := make ([]byte , 128 )
78
78
count , err := file .Read (data )
79
79
if err != nil {
80
- return errors .Wrap (err , "file .Read() in readHeader() failed" )
80
+ return errors .Wrap (err , "\n file .Read() in readHeader() failed" )
81
81
}
82
82
83
83
if count != 128 {
@@ -129,6 +129,7 @@ func alignIndex(r io.Reader, order binary.ByteOrder, index int) int {
129
129
130
130
func extractClass (mat * MatMatrix , r io.Reader , order binary.ByteOrder ) (int , error ) {
131
131
var index int
132
+
132
133
switch int (mat .Class ) {
133
134
case MxCellClass :
134
135
var content CellPrt
@@ -256,12 +257,13 @@ func extractMatrix(r io.Reader, order binary.ByteOrder) (MatMatrix, int, error)
256
257
// Array Flags
257
258
_ , numberOfBytes , offset , err = extractTag (r , order )
258
259
if err != nil {
259
- return MatMatrix {}, 0 , err
260
+ return MatMatrix {}, 0 , errors . Wrap ( err , " \n extractTag() in extractMatrix() failed:" )
260
261
}
261
262
index = alignIndex (r , order , index + offset + int (numberOfBytes ))
263
+
262
264
arrayFlags , err := readMatfBytes (r , order , int (numberOfBytes ))
263
265
if err != nil {
264
- return MatMatrix {}, 0 , err
266
+ return MatMatrix {}, 0 , errors . Wrap ( err , " \n readMatfBytes() in extractMatrix() failed:" )
265
267
}
266
268
matrix .Flags = order .Uint32 (arrayFlags )
267
269
matrix .Class = matrix .Flags & 0x0F
@@ -270,26 +272,26 @@ func extractMatrix(r io.Reader, order binary.ByteOrder) (MatMatrix, int, error)
270
272
// Dimensions Array
271
273
dataType , numberOfBytes , offset , err = extractTag (r , order )
272
274
if err != nil {
273
- return MatMatrix {}, 0 , err
275
+ return MatMatrix {}, 0 , errors . Wrap ( err , " \n extractTag() in extractMatrix() failed:" )
274
276
}
275
277
dims , _ , err := extractDataElement (r , order , int (dataType ), int (numberOfBytes ))
276
278
if err != nil {
277
- return MatMatrix {}, 0 , err
279
+ return MatMatrix {}, 0 , errors . Wrap ( err , " \n extractDataElement() in extractMatrix() failed:" )
278
280
}
279
281
matrix .Dim , _ = readDimensions (dims )
280
282
index = alignIndex (r , order , index + offset + int (numberOfBytes ))
281
283
282
284
// Array Name
283
285
arrayName , step , err := extractArrayName (r , order )
284
286
if err != nil {
285
- return MatMatrix {}, 0 , err
287
+ return MatMatrix {}, 0 , errors . Wrap ( err , " \n extractArrayName() in extractMatrix() failed:" )
286
288
}
287
289
matrix .Name = arrayName
288
290
index = alignIndex (r , order , index + step )
289
291
290
292
steps , err := extractClass (& matrix , r , order )
291
293
if err != nil {
292
- return MatMatrix {}, 0 , err
294
+ return MatMatrix {}, 0 , errors . Wrap ( err , " \n extractClass() in extractMatrix() failed:" )
293
295
}
294
296
index = alignIndex (r , order , index + steps )
295
297
@@ -321,7 +323,7 @@ func decompressData(data []byte) ([]byte, error) {
321
323
var out bytes.Buffer
322
324
r , err := zlib .NewReader (tmp )
323
325
if err != nil {
324
- return []byte {}, errors .Wrap (err , "zlib .NewReader() in decompressData() failed" )
326
+ return []byte {}, errors .Wrap (err , "\n zlib .NewReader() in decompressData() failed" )
325
327
}
326
328
defer r .Close ()
327
329
if r != nil {
@@ -343,41 +345,41 @@ func readDataElementField(m *Matf, order binary.ByteOrder) (MatMatrix, error) {
343
345
completeBytes = order .Uint32 (tag [4 :8 ])
344
346
data , err = readBytes (m , int (completeBytes ))
345
347
if err != nil {
346
- return MatMatrix {}, errors .Wrap (err , "readBytes () in readDataElementField() failed" )
348
+ return MatMatrix {}, errors .Wrap (err , "\n readBytes () in readDataElementField() failed" )
347
349
}
348
350
349
351
if dataType == uint32 (MiCompressed ) {
350
352
plain , err := decompressData (data [:completeBytes ])
351
353
if err != nil {
352
- return MatMatrix {}, errors .Wrap (err , "decompressData () in readDataElementField() failed" )
354
+ return MatMatrix {}, errors .Wrap (err , "\n decompressData () in readDataElementField() failed" )
353
355
}
354
356
dataType = order .Uint32 (plain [:4 ])
355
357
completeBytes = order .Uint32 (plain [4 :8 ])
356
358
if err != nil {
357
- return MatMatrix {}, errors .Wrap (err , "extractTag () in readDataElementField() failed" )
359
+ return MatMatrix {}, errors .Wrap (err , "\n extractTag () in readDataElementField() failed" )
358
360
}
359
- data = plain
361
+ data = plain [ 8 :]
360
362
}
361
363
362
364
tmpfile , err := ioutil .TempFile ("" , "matf" )
363
365
if err != nil {
364
- return MatMatrix {}, errors .Wrap (err , "ioutil .TempFile() in readDataElementField() failed" )
366
+ return MatMatrix {}, errors .Wrap (err , "\n ioutil .TempFile() in readDataElementField() failed" )
365
367
}
366
368
367
369
defer func () {
368
370
tmpfile .Close ()
369
371
os .Remove (tmpfile .Name ())
370
372
}()
371
373
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 , "\n os .Write() in readDataElementField() failed" )
374
376
}
375
377
tmpfile .Seek (0 , 0 )
376
378
r := bufio .NewReader (tmpfile )
377
379
378
380
element , i , err := extractDataElement (r , order , int (dataType ), int (completeBytes ))
379
381
if err != nil {
380
- return MatMatrix {}, errors .Wrap (err , "extractDataElement () in readDataElementField() failed" )
382
+ return MatMatrix {}, errors .Wrap (err , "\n extractDataElement () in readDataElementField() failed" )
381
383
}
382
384
if int (dataType ) == MiMatrix {
383
385
mat = element .(MatMatrix )
@@ -411,7 +413,7 @@ func Open(file string) (*Matf, error) {
411
413
412
414
err = readHeader (mat , f )
413
415
if err != nil {
414
- return nil , errors .Wrap (err , "readHeader () in Open() failed" )
416
+ return nil , errors .Wrap (err , "\n readHeader () in Open() failed" )
415
417
}
416
418
417
419
return mat , nil
0 commit comments