DEADSOFTWARE

Makefile: proper dependency management
[odcread.git] / reader.cc
index 14b3b0c605ae4d52bfebff1c371f52d8139f2146..ffca53deacab5f2a2cfa280b6107ee0e5b23371a 100644 (file)
--- a/reader.cc
+++ b/reader.cc
@@ -24,16 +24,20 @@ CHAR Reader::readLChar() {
        char *bufPtr = (char *)&buf;
        d_rider.read(bufPtr, 2);
        if (isLittleEndian()) {
-               return buf;
+               return buf - 0x8000;
        } else {
                CHAR out;
                char *outPtr = (char *)&out;
                outPtr[0] = bufPtr[1]; outPtr[1] = bufPtr[0];
-               return out;
+               return out - 0x8000;
        }
 }
 
 void Reader::readLChar(CHAR *buf, size_t len) {
+       for (int i = 0; i < len; ++i) {
+               buf[i] = readLChar();
+       }
+       /*
        char *bufPtr = (char *)buf;
        int len2 = len * 2;
        d_rider.read(bufPtr, len2);
@@ -45,6 +49,7 @@ void Reader::readLChar(CHAR *buf, size_t len) {
                        bufPtr[i + 1] = tmp;
                }
        }
+       */
 }
 
 BYTE Reader::readByte() {
@@ -235,8 +240,6 @@ Store *Reader::readStoreOrElemStore(bool isElem) {
                        d_store = x;
                } else {
                        // join(d_store, x)
-                       // I have no idea what this would actually mean if it happened.
-                       throw "Joining of stores not implemented";
                }
                if (isElem) {
                        d_elemList.push_back(x);
@@ -251,8 +254,6 @@ Store *Reader::readStoreOrElemStore(bool isElem) {
                        d_store = alien;
                } else {
                        // join(d_store, alien)
-                       // I have no idea what this would actually mean if it happened.
-                       throw "Joining of stores not implemented";
                }
                if (isElem) {
                        d_elemList.push_back(alien);