author | pohly <pohly> | 2005-05-05 14:39:33 (UTC) |
---|---|---|
committer | pohly <pohly> | 2005-05-05 14:39:33 (UTC) |
commit | 39fbfd5eb7e45d73d38e8a2ce9437a3d7e1b8e91 (patch) (side-by-side diff) | |
tree | 96e66fdc18dca4d4ab8611133e072f57dea224b9 /noncore/apps/opie-reader/iSilo.cpp | |
parent | 279fc4fd1986074acbadd3a8e86fcf3968a8dd5c (diff) | |
download | opie-39fbfd5eb7e45d73d38e8a2ce9437a3d7e1b8e91.zip opie-39fbfd5eb7e45d73d38e8a2ce9437a3d7e1b8e91.tar.gz opie-39fbfd5eb7e45d73d38e8a2ce9437a3d7e1b8e91.tar.bz2 |
new opie-reader sources with support for ArriereGo, Reb input and flite output plugins
Diffstat (limited to 'noncore/apps/opie-reader/iSilo.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/iSilo.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/noncore/apps/opie-reader/iSilo.cpp b/noncore/apps/opie-reader/iSilo.cpp index 5f14b96..1f727fe 100644 --- a/noncore/apps/opie-reader/iSilo.cpp +++ b/noncore/apps/opie-reader/iSilo.cpp @@ -1,28 +1,28 @@ #include "iSilo.h" -#ifdef _WINDOWS
-#include <winsock.h>
-#endif
+#ifdef _WINDOWS +#include <winsock.h> +#endif u_int8_t *rodata = (u_int8_t *) "\x10\x11\x12\x00\x08\x07\x09\x06\x0a\x05\x0b\x04\x0c\x03\x0d\x02\x0e\x01\x0f"; u_int16_t *rsize_min = (u_int16_t *) "\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0d" "\x00\x0f\x00\x11\x00\x13\x00\x17\x00\x1b\x00\x1f\x00\x23\x00\x2b\x00\x33\x00" "\x3b\x00\x43\x00\x53\x00\x63\x00\x73\x00\x83\x00\xa3\x00\xc3\x00\xe3\x00\x02" "\x01"; u_int8_t *rsize_delta = (u_int8_t *) "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x02\x02\x02\x02\x03\x03\x03" "\x03\x04\x04\x04\x04\x05\x05\x05\x05\x00"; u_int16_t *rpos_min = (u_int16_t *) "\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x07\x00\x09\x00\x0d\x00\x11\x00\x19" "\x00\x21\x00\x31\x00\x41\x00\x61\x00\x81\x00\xc1\x00\x01\x01\x81\x01\x01\x02" "\x01\x03\x01\x04\x01\x06\x01\x08\x01\x0c\x01\x10\x01\x18\x01\x20\x01\x30\x01" "\x40\x01\x60"; u_int8_t *rpos_delta = (u_int8_t *) "\x00\x00\x00\x00\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x07" "\x08\x08\x09\x09\x0a\x0a\x0b\x0b\x0c\x0c\x0d\x0d"; void iSilo::init_tables(void) @@ -273,48 +273,49 @@ bool iSilo::reset_trees() code2tree(master); if (read_tree(master, text) == -1) { qDebug("read_tree() failed (format incorrect?)"); return false; } if (read_tree(master, lz) == -1) { qDebug("read_tree() failed (format incorrect?)"); return false;; } return true; } u_int32_t iSilo::get_bits(int num) { int i, r; u_int32_t result = 0; if (num == 0) { pos = 0; return(0); } for (i = 0; i < num; i++) { if (pos == 0) { + unsuspend(); r = fread(buf, sizeof(u_int32_t), 256, fin); if (r <= 0) { qDebug("ERROR: Unexpected end of file"); exit(-1); /* FIXME */ } pos = 32*256; } pos--; result <<= 1; result |= (ntohl(buf[255 - (pos/32)]) >> (31-(pos % 32))) & 1; } return(result); } u_int32_t iSilo::get_swapped(int num) { return(swap_bits(get_bits(num),num)); } int iSilo::read_text() { u_int32_t *j; u_int32_t k, l, bp, idx; for (bp = 0; bp < buffer_size;) { j = huffman_get(text); if (j == NULL) return(-1); @@ -540,54 +541,54 @@ int iSilo::OpenFile(const char* src) read_attr(); return 0; } void iSilo::read_attr() { // qDebug("read_attr:<%u, %u, %u>", attr_rec, attr_start, attr_end); current_attr = 0; if (attr != NULL) { delete [] attr; attr = NULL; } if (attr_rec >= attr_start && attr_rec < attr_end) { gotorecordnumber(attr_rec); fread(buffer, 1, 4, fin); fread(&attr_num, sizeof(attr_num), 1, fin); attr_num = ntohs(attr_num)+1; attr = new s_attrib[attr_num]; for (int j = 0; j < attr_num; j++) { fread(&attr[j].offset, 2, 1, fin); attr[j].offset = htons(attr[j].offset); - }
+ } #ifdef _WINDOWS - for (j = 0; j < attr_num; j++)
-#else
- for (int j = 0; j < attr_num; j++)
-#endif
+ for (j = 0; j < attr_num; j++) +#else + for (int j = 0; j < attr_num; j++) +#endif { fread(&attr[j].value, 2, 1, fin); if (attr[j].offset < last_pos) { pos_hi++; } if ((attr[j].offset == last_pos) && (attr[j].value == last_value)) { pos_hi++; } last_pos = attr[j].offset; attr[j].offset |= ((u_int32_t)pos_hi) << 16; last_value = attr[j].value; } current_attr = 0; // last_value = attr[attr_num-1].value; // qDebug("Next attr:%u (%u)", attr[current_attr].offset, filepos); // qDebug("Next attr:%x (%x)", attr[current_attr].offset, filepos); } } void iSilo::locate(unsigned int n) |