summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/ZText.h
Side-by-side diff
Diffstat (limited to 'noncore/apps/opie-reader/ZText.h') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/ZText.h45
1 files changed, 31 insertions, 14 deletions
diff --git a/noncore/apps/opie-reader/ZText.h b/noncore/apps/opie-reader/ZText.h
index 22d3733..ab81a5e 100644
--- a/noncore/apps/opie-reader/ZText.h
+++ b/noncore/apps/opie-reader/ZText.h
@@ -2,7 +2,7 @@
#define __Text_h
#include <stdio.h>
-#include "zlib/zlib.h"
+#include <zlib.h>
#include <sys/stat.h>
-
+#include "useqpe.h"
#include "CExpander.h"
@@ -11,14 +11,17 @@ class Text: public CExpander {
unsigned long fsize;
public:
- virtual void suspend()
- {
+ void suspend()
+ {
+#ifdef USEQPE
bSuspended = true;
suspos = gztell(file);
gzclose(file);
file = NULL;
- sustime = time(NULL);
+ sustime = time(NULL);
+#endif
}
- virtual void unsuspend()
+ void unsuspend()
{
+#ifdef USEQPE
if (bSuspended)
{
@@ -38,5 +41,6 @@ public:
}
suspos = gzseek(file, suspos, SEEK_SET);
- }
+ }
+#endif
}
Text() : file(NULL) {};
@@ -45,5 +49,5 @@ public:
if (file != NULL) gzclose(file);
}
- virtual int OpenFile(const char *src)
+ int OpenFile(const char *src)
{
if (file != NULL) gzclose(file);
@@ -53,13 +57,26 @@ public:
return ((file = gzopen(src,"rb")) == NULL);
}
- virtual int getch() { return gzgetc(file); }
- virtual unsigned int locate() { return gztell(file); }
- virtual void locate(unsigned int n) { gzseek(file,n,SEEK_SET); }
- virtual bool hasrandomaccess() { return true; }
- virtual void sizes(unsigned long& _file, unsigned long& _text)
+ int getch() { return gzgetc(file); }
+ unsigned int locate() { return gztell(file); }
+ void locate(unsigned int n) { gzseek(file,n,SEEK_SET); }
+ bool hasrandomaccess() { return true; }
+ void sizes(unsigned long& _file, unsigned long& _text)
{
_text = _file = fsize;
+ FILE* f = fopen(fname, "rb");
+ if (f != NULL)
+ {
+ 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);
+ }
+ fclose(f);
+ }
}
- virtual MarkupType PreferredMarkup()
+ MarkupType PreferredMarkup()
{
return cTEXT;