00001 /* 00002 PeRdr - PE file disassembler 00003 Copyright (C) 1999-2002 Frediano Ziglio 00004 ----- 00005 00006 This program is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 2 of the License, or 00009 (at your option) any later version. 00010 00011 This program is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program; if not, write to the Free Software 00018 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00019 ----- 00020 00021 INFORMATION 00022 www: https://freddy77.tripod.com/perdr/ 00023 e-mail: freddy77@angelfire.com 00024 */ 00025 #include "global.h" 00026 #ifdef HAVE_HDRSTOP 00027 #pragma hdrstop 00028 #endif 00029 00030 #include "signfile.hpp" 00031 00032 CSignFile::CSignFile(const char* filename,const char* mode):CFile(filename,mode) 00033 { 00034 } 00035 00036 char *CSignFile::ReadString() const 00037 { 00038 long start = Tell(); 00039 char* res = CFile::ReadString(); 00040 if (res) 00041 ranges.insert(range<long>(start,start+(strlen(res)+1))); 00042 return res; 00043 } 00044 00045 char *CSignFile::ReadStringFlag(unsigned flag) const 00046 { 00047 long start = Tell(); 00048 char* res = CFile::ReadStringFlag(flag); 00049 if (res) 00050 ranges.insert(range<long>(start,Tell() - start)); 00051 return res; 00052 } 00053 00054 void CSignFile::RawRead(void *ptr,size_t size) const 00055 { 00056 long start = Tell(); 00057 CFile::RawRead(ptr,size); 00058 ranges.insert(range<long>(start,start+size)); 00059 }