28 lines
663 B
C++
28 lines
663 B
C++
#ifndef _RAR_SAVEPOS_
|
|
#define _RAR_SAVEPOS_
|
|
|
|
class SaveFilePos
|
|
{
|
|
private:
|
|
File *SaveFile;
|
|
int64 SavePos;
|
|
public:
|
|
SaveFilePos(File &Src)
|
|
{
|
|
SaveFile=&Src;
|
|
SavePos=Src.Tell();
|
|
}
|
|
~SaveFilePos()
|
|
{
|
|
// If file is already closed by current exception processing,
|
|
// we would get uneeded error messages and an exception inside of
|
|
// exception and terminate if we try to seek without checking
|
|
// if file is still opened. We should not also restore the position
|
|
// if external code closed the file on purpose.
|
|
if (SaveFile->IsOpened())
|
|
SaveFile->Seek(SavePos,SEEK_SET);
|
|
}
|
|
};
|
|
|
|
#endif
|