Beispiel #1
0
void DImageHfs::readDirectory()
{
  DEBUG_OUT<<"DImageHfs::readDirectory...\n";
  freeDirCache();
  hfs=false;  noFileSystem=true;  skipOffset=0;
  lisa=false;  partition=false; partNum=0; partOffset=0;
  unsigned int t=0;
  for(t=0;t<256;t++) diskName[t]=0;
  strcpy(diskName,"NO NAME");
  // first look for a partition map...
  readBlock(0);
  if(lookAtFileSystem(0)) {
    if(partition) {
      DEBUG_OUT<<"Found a driver descriptor...\n";
      findFirstHFSPartition();
    }
  }
  // skip over boot info, if any...
  readBlock(2+partOffset);
  if(lookAtFileSystem(0)) {
    noFileSystem=false;
  }
  if(noFileSystem) {
    DEBUG_OUT<<"Can't readDirectory, disk format error!\n";
    return;
  }
  DEBUG_OUT<<"DImageHfs::readDirectory, got a good HFS filesystem...\n";
  if(partition) {
    DEBUG_OUT<<"partNum="<<partNum<<" partOffset="<<partOffset<<"\n";
  }
  if(hfs) DEBUG_OUT<<"hfs "; else DEBUG_OUT<<"mfs ";
  if(skipOffset) DEBUG_OUT<<"(offset is "<<skipOffset<<") ";
  DEBUG_OUT<<"\n";
  DEBUG_OUT<<"DImageHfs::readDirectory not implemented!\n";
}
Beispiel #2
0
DDiskImageMem::~DDiskImageMem()
{
  // TODO: flush files if cached
  freeDirCache();
  if(imageData) delete imageData;
  imageData=(BYTE *)NULL;
  diskMounted=false;
}
static int free_file(Stream_t *Stream)
{
	DeclareThis(File_t);
	Fs_t *Fs = This->Fs;
	fsPreallocateClusters(Fs, -This->preallocatedClusters);       
	FREE(&This->direntry.Dir);
	freeDirCache(Stream);
	return hash_remove(filehash, (void *) Stream, This->hint);
}
Beispiel #4
0
DDiskImageAbstract::~DDiskImageAbstract()
{
  // TODO: flush files if cached
  freeDirCache();
  diskMounted=false;
}
Beispiel #5
0
DImageHfs::~DImageHfs()
{
  freeDirCache();
  diskMounted=false;
}