git-svn-id: https://profuse.googlecode.com/svn/branches/v2@223 aa027e90-d47c-11dd-86d7-074df07e0730

This commit is contained in:
ksherlock
2010-05-19 01:07:47 +00:00
parent 22afe5d128
commit 77fda944ae
10 changed files with 87 additions and 26 deletions
+40
View File
@@ -9,6 +9,11 @@
#include <Device/DiskImage.h>
#include <Device/UniversalDiskImage.h>
#include <Device/DiskCopy42Image.h>
#include <Device/DavexDiskImage.h>
#include <File/MappedFile.h>
#include <Cache/MappedBlockCache.h>
@@ -71,6 +76,41 @@ unsigned DiskImage::ImageType(const char *type, unsigned defv)
return defv;
}
BlockDevice *DiskImage::Open(const char *name, bool readOnly, unsigned imageType)
{
if (!imageType) imageType = ImageType(name, 'PO__');
// TODO -- if no image type, guess based on file size?
// TODO -- check for /dev/* ?
MappedFile file(name, readOnly);
switch (imageType)
{
case '2IMG':
return UniversalDiskImage::Open(&file);
case 'DC42':
return DiskCopy42Image::Open(&file);
case 'DO__':
return DOSOrderDiskImage::Open(&file);
case 'PO__':
return ProDOSOrderDiskImage::Open(&file);
case 'DVX_':
return DavexDiskImage::Open(&file);
}
// throw an error?
return NULL;
}
DiskImage::DiskImage(const char *name, bool readOnly)