Diffstat (limited to 'noncore/apps/opie-reader/Text.h') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/Text.h | 28 |
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 |