From 7af193df775e0a6a3a427d73f548245f9c69c0ed Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Tue, 22 Oct 2002 14:30:17 +0000 Subject: [PATCH] Added read() functions that take a MemBuffer as arg. committer: mfx 1035297017 +0000 --- src/file.cpp | 36 ++++++++++++++++++++++++++++++------ src/file.h | 6 ++++++ 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/file.cpp b/src/file.cpp index 79e7ffe5..ec2cbe1f 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -28,6 +28,7 @@ #include "conf.h" #include "file.h" +#include "mem.h" /************************************************************************* @@ -236,24 +237,47 @@ void InputFile::sopen(const char *name, int flags, int shflags) if (!isOpen()) { if (errno == ENOENT) - throw FileNotFoundException(_name,errno); + throw FileNotFoundException(_name, errno); else if (errno == EEXIST) - throw FileAlreadyExistsException(_name,errno); + throw FileAlreadyExistsException(_name, errno); else - throwIOException(_name,errno); + throwIOException(_name, errno); } } int InputFile::read(void *buf, int len) { - return super::read(buf,len); + return super::read(buf, len); } - int InputFile::readx(void *buf, int len) { - return super::readx(buf,len); + return super::readx(buf, len); +} + + +int InputFile::read(MemBuffer *buf, int len) +{ + assert((unsigned)len <= buf->getSize()); + return super::read(buf->getVoidPtr(), len); +} + +int InputFile::readx(MemBuffer *buf, int len) +{ + assert((unsigned)len <= buf->getSize()); + return super::readx(buf->getVoidPtr(), len); +} + + +int InputFile::read(MemBuffer &buf, int len) +{ + return read(&buf, len); +} + +int InputFile::readx(MemBuffer &buf, int len) +{ + return readx(&buf, len); } diff --git a/src/file.h b/src/file.h index 891023c4..9dbaad97 100644 --- a/src/file.h +++ b/src/file.h @@ -29,6 +29,8 @@ #ifndef __UPX_FILE_H #define __UPX_FILE_H +class MemBuffer; + /************************************************************************* // @@ -92,6 +94,10 @@ public: virtual int read(void *buf, int len); virtual int readx(void *buf, int len); + virtual int read(MemBuffer *buf, int len); + virtual int readx(MemBuffer *buf, int len); + virtual int read(MemBuffer &buf, int len); + virtual int readx(MemBuffer &buf, int len); virtual void seek(off_t off, int whence); virtual off_t tell() const;