diff options
Diffstat (limited to 'mpeglib/lib/util/file/fileAccess.cpp')
-rw-r--r-- | mpeglib/lib/util/file/fileAccess.cpp | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/mpeglib/lib/util/file/fileAccess.cpp b/mpeglib/lib/util/file/fileAccess.cpp new file mode 100644 index 00000000..8eab864f --- /dev/null +++ b/mpeglib/lib/util/file/fileAccess.cpp @@ -0,0 +1,95 @@ +/* + simple file access interface. + Copyright (C) 2001 Martin Vogt + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General Public License as published by + the Free Software Foundation. + + For more information look at the file COPYRIGHT in this package + + */ + + + +#include "fileAccess.h" + + +FileAccess::FileAccess() { + file=NULL; + length=0; +} + + +FileAccess::~FileAccess() { + close(); +} + + +int FileAccess::open(const char* path) { + close(); + file=fopen(path,"rb"); + length=calcByteLength(); + return (file != NULL); +} + + +void FileAccess::close() { + if (file != NULL) { + fclose(file); + file=NULL; + length=0; + } +} + + +int FileAccess::read(char* dest,int len) { + int back=0; + if (file != NULL) { + back=fread(dest,1,len,file); + } else { + printf("FileAccess::read not open\n"); + } + return back; +} + +int FileAccess::eof() { + int back=true; + if (file != NULL) { + back=feof(file); + } + return back; +} + + +int FileAccess::seek(long pos) { + if (file == NULL) { + return -1; + } + return fseek(file,pos,SEEK_SET); +} + + +long FileAccess::getBytePosition() { + if (file == NULL) { + return 0; + } + return ftell(file); +} + + +long FileAccess::getByteLength() { + return length; +} + +long FileAccess::calcByteLength() { + if (file == NULL) { + return 0; + } + long pos=getBytePosition(); + fseek(file,0,SEEK_END); + long back=getBytePosition(); + fseek(file,pos,SEEK_SET); + return back; +} + |