Ignore:
Timestamp:
2006-12-15T12:19:11+13:00 (17 years ago)
Author:
mdewsnip
Message:

Running this on a big-endian machine would fail to read little-endian CDS/ISIS files. I've assumed most (all?) CDS/ISIS files are little-endian, and added code to convert the values into the right endianness on big-endian machines.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/packages/isis-gdl/Master.cpp

    r7135 r13518  
    161161        s.read((char *) &leader_directory.status_, sizeof(ISIS_INT));
    162162
     163        fix_endianness(leader_directory.mfn_);
     164        fix_endianness(leader_directory.mfrl_);
     165        fix_endianness(leader_directory.mfbwb_);
     166        fix_endianness(leader_directory.mfbwp_);
     167        fix_endianness(leader_directory.base_);
     168        fix_endianness(leader_directory.nvf_);
     169        fix_endianness(leader_directory.status_);
     170
    163171        if (!leader_directory.dir_.empty())
    164172            leader_directory.dir_.clear();
     
    174182                DirEntry de;
    175183                s.read((char *) &de, GetDirEntrySize());
     184                fix_endianness(de.tag_);
     185                fix_endianness(de.pos_);
     186                fix_endianness(de.len_);
    176187                // Don't check integrity of directory entries here
    177188                leader_directory.dir_.push_back(de);
     
    714725    leader_directory_.mfn_  = *(reinterpret_cast<ISIS_LONG*>((char *) record_.c_str()));
    715726    leader_directory_.mfrl_ = *(reinterpret_cast<ISIS_INT*> ((char *)(record_.c_str()+sizeof(ISIS_LONG))));
     727    fix_endianness(leader_directory_.mfn_);
     728    fix_endianness(leader_directory_.mfrl_);
    716729    if (leader_directory_.mfrl_ < 0) leader_directory_.mfrl_ = -leader_directory_.mfrl_;    // mfrl can be negative!!!!
    717730
Note: See TracChangeset for help on using the changeset viewer.