summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/ZText.h
authorpohly <pohly>2004-08-24 20:52:45 (UTC)
committer pohly <pohly>2004-08-24 20:52:45 (UTC)
commit73253e93327cf4ef0932de1b4afb56af22a0f37e (patch) (side-by-side diff)
tree1c9a7a6dd3341e036a894d348a3372525d29acec /noncore/apps/opie-reader/ZText.h
parente90847c784c48bd21bf8768cb38edb853b832697 (diff)
downloadopie-73253e93327cf4ef0932de1b4afb56af22a0f37e.zip
opie-73253e93327cf4ef0932de1b4afb56af22a0f37e.tar.gz
opie-73253e93327cf4ef0932de1b4afb56af22a0f37e.tar.bz2
updated source to opie-reader 0.7g
Diffstat (limited to 'noncore/apps/opie-reader/ZText.h') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/ZText.h61
1 files changed, 46 insertions, 15 deletions
diff --git a/noncore/apps/opie-reader/ZText.h b/noncore/apps/opie-reader/ZText.h
index ab81a5e..06e3bf8 100644
--- a/noncore/apps/opie-reader/ZText.h
+++ b/noncore/apps/opie-reader/ZText.h
@@ -11,23 +11,29 @@ class Text: public CExpander {
unsigned long fsize;
public:
void suspend()
- {
+ {
#ifdef USEQPE
- bSuspended = true;
- suspos = gztell(file);
- gzclose(file);
- file = NULL;
- sustime = time(NULL);
+ if (!bSuspended)
+ {
+ bSuspended = true;
+ suspos = gztell(file);
+ gzclose(file);
+ file = NULL;
+ sustime = time(NULL);
+ }
#endif
}
void unsuspend()
{
-#ifdef USEQPE
+#ifdef USEQPE
if (bSuspended)
{
bSuspended = false;
- int delay = time(NULL) - sustime;
- if (delay < 10) sleep(10-delay);
+ if (sustime != ((time_t)-1))
+ {
+ int delay = time(NULL) - sustime;
+ if (delay < 10) sleep(10-delay);
+ }
file = gzopen(fname, "rb");
for (int i = 0; file == NULL && i < 5; i++)
{
@@ -40,13 +46,19 @@ public:
exit(0);
}
suspos = gzseek(file, suspos, SEEK_SET);
- }
+ }
#endif
}
Text() : file(NULL) {};
virtual ~Text()
{
- if (file != NULL) gzclose(file);
+ if (file != NULL)
+ {
+#ifdef USEQPE
+ unsuspend();
+#endif
+ gzclose(file);
+ }
}
int OpenFile(const char *src)
{
@@ -56,9 +68,27 @@ public:
fsize = _stat.st_size;
return ((file = gzopen(src,"rb")) == NULL);
}
- int getch() { return gzgetc(file); }
- unsigned int locate() { return gztell(file); }
- void locate(unsigned int n) { gzseek(file,n,SEEK_SET); }
+ int getch()
+ {
+#ifdef USEQPE
+ unsuspend();
+#endif
+ return gzgetc(file);
+ }
+ unsigned int locate()
+ {
+#ifdef USEQPE
+ unsuspend();
+#endif
+ return gztell(file);
+ }
+ void locate(unsigned int n)
+ {
+#ifdef USEQPE
+ unsuspend();
+#endif
+ gzseek(file,n,SEEK_SET);
+ }
bool hasrandomaccess() { return true; }
void sizes(unsigned long& _file, unsigned long& _text)
{
@@ -69,7 +99,7 @@ public:
unsigned char mn[2];
fread(mn, 1, 2, f);
if ((mn[0] == 31) && (mn[1] == 139))
- {
+ {
int tmp = sizeof(_text);
fseek(f,-tmp,SEEK_END);
fread(&_text, sizeof(_text), 1, f);
@@ -81,5 +111,6 @@ public:
{
return cTEXT;
}
+ QString about() { return QString("Text/gzipped text codec (c) Tim Wentford"); }
};
#endif