www.pudn.com > vdksrc.zip > VDiskExt.cpp
/*
VDiskExt.cpp
Virtual Disk Extent base class
Copyright (c) 2003 Ken Kato
*/
#include "vdkbase.h"
#include "vdkutil.h"
#include "VDisk.h"
#include "VDiskExt.h"
//
// constructor
//
VDiskExt::VDiskExt()
{
m_pFullPath = NULL;
m_pFileName = NULL;
m_nCapacity = 0;
m_nFileSize = 0;
m_nFileAttr = 0;
m_bModified = FALSE;
}
//
// destructor
//
VDiskExt::~VDiskExt()
{
if (m_pFullPath) {
delete[] m_pFullPath;
}
}
//
// allocate and store initial path
//
VDKSTAT VDiskExt::SetPath(PCHAR sPath)
{
VDKSTAT ret;
CHAR path[MAX_PATH];
//
// remove previous path
//
if (m_pFullPath) {
if (!VdkCmpNoCase(m_pFullPath, sPath)) {
return VDK_OK;
}
delete[] m_pFullPath;
}
m_pFullPath = NULL;
m_pFileName = NULL;
//
// Get full path of the given path
//
ret = VdkFullPath(path, sizeof(path), sPath);
if (ret != VDK_OK) {
return ret;
}
if ((m_pFullPath = new CHAR[strlen(path) + 1]) == NULL) {
return VdkLastError();
}
strcpy(m_pFullPath, path);
//
// search beginning of file name
//
m_pFileName = m_pFullPath + strlen(m_pFullPath);
while (m_pFileName > m_pFullPath &&
*(m_pFileName - 1) != PATH_SEPARATOR_CHAR &&
*(m_pFileName - 1) != ALT_SEPARATOR_CHAR) {
m_pFileName--;
}
return VDK_OK;
}