summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/Text.h
Side-by-side diff
Diffstat (limited to 'noncore/apps/opie-reader/Text.h') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/Text.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/noncore/apps/opie-reader/Text.h b/noncore/apps/opie-reader/Text.h
new file mode 100644
index 0000000..4c689be
--- a/dev/null
+++ b/noncore/apps/opie-reader/Text.h
@@ -0,0 +1,28 @@
+#ifndef __Text_h
+#define __Text_h
+#include <stdio.h>
+#include <sys/stat.h>
+#include "CExpander.h"
+
+class Text: public CExpander {
+ FILE* file;
+public:
+ Text() : file(NULL) {};
+ virtual ~Text() { if (file != NULL) fclose(file); }
+ virtual int openfile(const tchar *src)
+ {
+ if (file != NULL) fclose(file);
+ return ((file = fopen(src,"rb")) == NULL);
+ }
+ virtual int getch() { return fgetc(file); }
+ virtual unsigned int locate() { return ftell(file); }
+ virtual void locate(unsigned int n) { fseek(file,n,SEEK_SET); }
+ virtual bool hasrandomaccess() { return true; }
+ virtual void sizes(unsigned long& _file, unsigned long& _text)
+ {
+ struct stat _stat;
+ fstat(fileno(file),&_stat);
+ _text = _file = _stat.st_size;
+ }
+};
+#endif