summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/ztxt.cpp
Side-by-side diff
Diffstat (limited to 'noncore/apps/opie-reader/ztxt.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/ztxt.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/noncore/apps/opie-reader/ztxt.cpp b/noncore/apps/opie-reader/ztxt.cpp
index 35db05e..e04eaa0 100644
--- a/noncore/apps/opie-reader/ztxt.cpp
+++ b/noncore/apps/opie-reader/ztxt.cpp
@@ -58,24 +58,25 @@ int ztxt::getch()
}
unsigned int ztxt::locate()
{
return currentpos;
}
void ztxt::locate(unsigned int n)
{
if (hasrandomaccess())
{
+ unsuspend();
bufferrec = n / ntohs(hdr0.recordSize) + 1;
if (bufferrec == 1)
{
inflateEnd(&zstream);
}
size_t reclen = recordlength(bufferrec);
if (reclen == 0) return;
gotorecordnumber(bufferrec);
fread(compressedtextbuffer, reclen, sizeof(char), fin);
zstream.next_in = compressedtextbuffer;
zstream.next_out = expandedtextbuffer;
@@ -98,24 +99,25 @@ void ztxt::locate(unsigned int n)
currentpos = n - n % ntohs(hdr0.recordSize);
while (currentpos < n) getch();
}
else
{
home();
while (currentpos < n && getch() != EOF);
}
}
void ztxt::home()
{
+unsuspend();
if (bInit)
{
inflateEnd(&zstream);
}
bInit = true;
size_t reclen = recordlength(1);
gotorecordnumber(1);
fread(compressedtextbuffer, reclen, sizeof(char), fin);
zstream.next_in = compressedtextbuffer;
zstream.next_out = expandedtextbuffer;
zstream.avail_out = buffersize;
@@ -138,24 +140,25 @@ void ztxt::home()
// printf("buffercontent:%u\n", buffercontent);
}
CList<Bkmk>* ztxt::getbkmklist()
{
UInt16 recno = ntohs(hdr0.bookmarkRecord);
// printf("Bookmarks - record %d contains %d\n", recno, ntohs(hdr0.numBookmarks));
if (recno == 0) return NULL;
CList<Bkmk>* t = new CList<Bkmk>;
+ unsuspend();
size_t cur = ftell(fin);
gotorecordnumber(recno);
for (int i = 0; i < ntohs(hdr0.numBookmarks); i++)
{
zTXTbkmk bkmk;
if (fread(&bkmk, sizeof(bkmk), 1, fin) != 1) break;
// printf("Bookmark number:%d:%.20s\n", i, bkmk.title);
tchar title[MAX_BMRK_LENGTH];
for (int j = 0; j < MAX_BMRK_LENGTH; j++)
{
title[j] = bkmk.title[j];
}