2015-07-31 14:06:45 -04:00
|
|
|
#include <string.h>
|
2006-06-15 04:19:30 +00:00
|
|
|
#include "DirectoryRecord.h"
|
|
|
|
|
|
|
|
using namespace ISO9660;
|
|
|
|
|
|
|
|
CDirectoryRecord::CDirectoryRecord()
|
|
|
|
{
|
2014-07-12 21:59:58 -04:00
|
|
|
memset(&m_name, 0, sizeof(m_name));
|
2006-06-15 04:19:30 +00:00
|
|
|
}
|
|
|
|
|
2014-07-12 21:59:58 -04:00
|
|
|
CDirectoryRecord::CDirectoryRecord(Framework::CStream* stream)
|
2006-06-15 04:19:30 +00:00
|
|
|
{
|
2014-07-12 21:59:58 -04:00
|
|
|
m_length = stream->Read8();
|
|
|
|
m_exLength = stream->Read8();
|
|
|
|
m_position = stream->Read32();
|
|
|
|
stream->Seek(4, Framework::STREAM_SEEK_CUR);
|
|
|
|
m_dataLength = stream->Read32();
|
|
|
|
stream->Seek(4, Framework::STREAM_SEEK_CUR);
|
|
|
|
stream->Seek(7, Framework::STREAM_SEEK_CUR);
|
|
|
|
m_flags = stream->Read8();
|
|
|
|
stream->Seek(6, Framework::STREAM_SEEK_CUR);
|
|
|
|
uint8 nameSize = stream->Read8();
|
|
|
|
stream->Read(m_name, nameSize);
|
|
|
|
m_name[nameSize] = 0x00;
|
2006-06-15 04:19:30 +00:00
|
|
|
|
2014-07-12 21:59:58 -04:00
|
|
|
int skipAmount = m_length - (0x21 + nameSize);
|
|
|
|
if(skipAmount > 0)
|
|
|
|
{
|
|
|
|
stream->Seek(skipAmount, Framework::STREAM_SEEK_CUR);
|
|
|
|
}
|
2006-06-15 04:19:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
CDirectoryRecord::~CDirectoryRecord()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2008-03-17 19:20:37 +00:00
|
|
|
uint8 CDirectoryRecord::GetLength() const
|
2006-06-15 04:19:30 +00:00
|
|
|
{
|
2014-07-12 21:59:58 -04:00
|
|
|
return m_length;
|
2006-06-15 04:19:30 +00:00
|
|
|
}
|
|
|
|
|
2008-03-17 19:20:37 +00:00
|
|
|
bool CDirectoryRecord::IsDirectory() const
|
2006-06-15 04:19:30 +00:00
|
|
|
{
|
2014-07-12 21:59:58 -04:00
|
|
|
return (m_flags & 0x02) != 0;
|
2006-06-15 04:19:30 +00:00
|
|
|
}
|
|
|
|
|
2008-03-17 19:20:37 +00:00
|
|
|
const char* CDirectoryRecord::GetName() const
|
2006-06-15 04:19:30 +00:00
|
|
|
{
|
2014-07-12 21:59:58 -04:00
|
|
|
return m_name;
|
2006-06-15 04:19:30 +00:00
|
|
|
}
|
|
|
|
|
2008-03-17 19:20:37 +00:00
|
|
|
uint32 CDirectoryRecord::GetPosition() const
|
2006-06-15 04:19:30 +00:00
|
|
|
{
|
2014-07-12 21:59:58 -04:00
|
|
|
return m_position;
|
2006-06-15 04:19:30 +00:00
|
|
|
}
|
|
|
|
|
2008-03-17 19:20:37 +00:00
|
|
|
uint32 CDirectoryRecord::GetDataLength() const
|
2006-06-15 04:19:30 +00:00
|
|
|
{
|
2014-07-12 21:59:58 -04:00
|
|
|
return m_dataLength;
|
2006-06-15 04:19:30 +00:00
|
|
|
}
|