mirror of
https://github.com/ksherlock/profuse.git
synced 2025-01-02 16:29:57 +00:00
git-svn-id: https://profuse.googlecode.com/svn/branches/v2@123 aa027e90-d47c-11dd-86d7-074df07e0730
This commit is contained in:
parent
da22eb1114
commit
b3334ac210
@ -114,6 +114,7 @@ ProDOSOrderDiskImage::ProDOSOrderDiskImage(MappedFile *file) :
|
||||
ProDOSOrderDiskImage *ProDOSOrderDiskImage::Create(const char *name, size_t blocks)
|
||||
{
|
||||
MappedFile *file = new MappedFile(name, blocks * 512);
|
||||
file->setBlocks(blocks);
|
||||
return new ProDOSOrderDiskImage(file);
|
||||
}
|
||||
|
||||
@ -154,6 +155,7 @@ DOSOrderDiskImage *DOSOrderDiskImage::Create(const char *name, size_t blocks)
|
||||
{
|
||||
MappedFile *file = new MappedFile(name, blocks * 512);
|
||||
file->setEncoding(MappedFile::DOSOrder);
|
||||
file->setBlocks(blocks);
|
||||
return new DOSOrderDiskImage(file);
|
||||
}
|
||||
|
||||
|
@ -52,7 +52,11 @@ unsigned Entry::ValidName(const char *name)
|
||||
|
||||
for (length = 1; length < 17; ++length)
|
||||
{
|
||||
if (!isalnumdot(name[length])) return 0;
|
||||
char c = name[length];
|
||||
if (isalnumdot(c)) continue;
|
||||
if (c == 0) break;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (length > 15) return 0;
|
||||
|
2
Makefile
2
Makefile
@ -1,5 +1,5 @@
|
||||
CC = g++
|
||||
CPPFLAGS += -Wall -O2
|
||||
CPPFLAGS += -Wall -O2 -g
|
||||
|
||||
newfs_prodos: \
|
||||
newfs_prodos.o \
|
||||
|
@ -58,12 +58,11 @@ VolumeDirectory::VolumeDirectory(const char *name, BlockDevice *device) :
|
||||
device->write(i, buffer.buffer());
|
||||
}
|
||||
|
||||
// TODO -- create/write the volume entry....
|
||||
|
||||
// allocate blocks for the bitmap itself
|
||||
unsigned bb = bitmap->bitmapBlocks();
|
||||
for (unsigned i = 0; i < bb; ++i)
|
||||
bitmap->allocBlock(i);
|
||||
bitmap->allocBlock(_bitmapPointer + i);
|
||||
|
||||
// now write the bitmap...
|
||||
const uint8_t *bm = (const uint8_t *)bitmap->bitmap();
|
||||
|
@ -1,20 +1,21 @@
|
||||
#include "BlockDevice.h"
|
||||
#include "UniversalDiskImage.h"
|
||||
#include "DiskCopy42Image.h"
|
||||
#include "DavexDiskImage.h"
|
||||
#include "RawDevice.h"
|
||||
#include "Exception.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cctype>
|
||||
#include <cerrno>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#include "BlockDevice.h"
|
||||
#include "DavexDiskImage.h"
|
||||
#include "DiskCopy42Image.h"
|
||||
#include "Entry.h"
|
||||
#include "Exception.h"
|
||||
#include "RawDevice.h"
|
||||
#include "UniversalDiskImage.h"
|
||||
|
||||
|
||||
#define NEWFS_VERSION "0.1"
|
||||
|
||||
using namespace ProFUSE;
|
||||
@ -244,7 +245,7 @@ int main(int argc, char **argv)
|
||||
try
|
||||
{
|
||||
std::auto_ptr<BlockDevice> device;
|
||||
//auto_ptr<VolumeDirectory> volume;
|
||||
std::auto_ptr<VolumeDirectory> volume;
|
||||
|
||||
// todo -- check if path matches /dev/xxx; if so, use RawDevice.
|
||||
// todo -- check if file exists at path?
|
||||
@ -252,7 +253,6 @@ int main(int argc, char **argv)
|
||||
switch(format)
|
||||
{
|
||||
case 'DC42':
|
||||
// todo -- pass in volume name
|
||||
device.reset(DiskCopy42Image::Create(fname, blocks, volumeName.c_str()));
|
||||
break;
|
||||
|
||||
@ -275,7 +275,7 @@ int main(int argc, char **argv)
|
||||
|
||||
// VolumeDirectory assumes ownership of device,
|
||||
// but doesn't release it on exception.
|
||||
//volume.reset(new VolumeDirectory(name, device));
|
||||
volume.reset(new VolumeDirectory(volumeName.c_str(), device.get()));
|
||||
device.release();
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user