author | pohly <pohly> | 2004-08-24 20:52:45 (UTC) |
---|---|---|
committer | pohly <pohly> | 2004-08-24 20:52:45 (UTC) |
commit | 73253e93327cf4ef0932de1b4afb56af22a0f37e (patch) (side-by-side diff) | |
tree | 1c9a7a6dd3341e036a894d348a3372525d29acec /noncore/apps/opie-reader/ZText.h | |
parent | e90847c784c48bd21bf8768cb38edb853b832697 (diff) | |
download | opie-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.h | 61 |
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 |