Changeset 618cd3f in subsurface


Ignore:
Timestamp:
May 7, 2017, 7:48:12 AM (8 months ago)
Author:
Dirk Hohndel <dirk@…>
Branches:
master
Children:
47dcc96
Parents:
ceb54e6
git-author:
Salvador Cuñat <salvador.cunat@…> (05/07/17 02:44:47)
git-committer:
Dirk Hohndel <dirk@…> (05/07/17 07:48:12)
Message:

Datatrak import rework: modify parsing macros

Change how parsing macros work to use memory pointers instead of file
descriptors.

Signed-off-by: Salvador Cuñat <salvador.cunat@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • core/datatrak.h

    r22f07f5 r618cd3f  
    4949        switch (_n) { \
    5050                case 1: \
    51                         if (fread (&lector_bytes, sizeof(char), _n, archivo) != _n) \
    52                                 goto bail; \
    53                         tmp_1byte = lector_bytes[0]; \
     51                        tmp_1byte = membuf[0]; \
    5452                        break; \
    5553                case 2: \
    56                         if (fread (&lector_bytes, sizeof(char), _n, archivo) != _n) \
    57                                 goto bail; \
    58                         tmp_2bytes = two_bytes_to_int (lector_bytes[1], lector_bytes[0]); \
     54                        tmp_2bytes = two_bytes_to_int (membuf[1], membuf[0]); \
    5955                        break; \
    6056                default: \
    61                         if (fread (&lector_word, sizeof(char), _n, archivo) != _n) \
    62                                 goto bail; \
    63                         tmp_4bytes = four_bytes_to_long(lector_word[3], lector_word[2], lector_word[1], lector_word[0]); \
     57                        tmp_4bytes = four_bytes_to_long(membuf[3], membuf[2], membuf[1], membuf[0]); \
    6458                        break; \
    65         }
     59        } \
     60        JUMP(membuf, _n);
    6661
    6762#define read_string(_property) \
    6863        unsigned char *_property##tmp = (unsigned char *)calloc(tmp_1byte + 1, 1); \
    69         if (fread((char *)_property##tmp, 1, tmp_1byte, archivo) != tmp_1byte) { \
    70                 free(_property##tmp); \
    71                 goto bail; \
    72         } \
     64        _property##tmp = memcpy(_property##tmp, membuf, tmp_1byte);\
    7365        _property = (unsigned char *)strcat(to_utf8(_property##tmp), ""); \
    74         free(_property##tmp);
     66        free(_property##tmp);\
     67        JUMP(membuf, tmp_1byte);
    7568
    7669#endif // DATATRAK_HEADER_H
Note: See TracChangeset for help on using the changeset viewer.