blob: dc3184574db55650e3eff4de5dd052b8055d7c5c [file] [log] [blame]
#ifndef _RAR_SAVEPOS_
#define _RAR_SAVEPOS_
namespace third_party_unrar {
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);
}
};
} // namespace third_party_unrar
#endif