mirror of
https://github.com/ksherlock/profuse.git
synced 2024-12-22 20:29:59 +00:00
sparse files, namespacing, $B0 ftype
git-svn-id: https://profuse.googlecode.com/svn/trunk@28 aa027e90-d47c-11dd-86d7-074df07e0730
This commit is contained in:
parent
23d9d31132
commit
aa8d1b0699
53
Disk.cpp
53
Disk.cpp
@ -41,6 +41,7 @@ Disk::Disk()
|
||||
_blocks = 0;
|
||||
_offset = 0;
|
||||
_size = 0;
|
||||
_flags = 0;
|
||||
}
|
||||
|
||||
Disk::~Disk()
|
||||
@ -50,7 +51,7 @@ Disk::~Disk()
|
||||
}
|
||||
|
||||
|
||||
Disk *Disk::OpenFile(const char *file, bool dos_order)
|
||||
Disk *Disk::OpenFile(const char *file, unsigned flags)
|
||||
{
|
||||
int fd;
|
||||
struct stat st;
|
||||
@ -106,6 +107,7 @@ Disk *Disk::OpenFile(const char *file, bool dos_order)
|
||||
offset = 84;
|
||||
blocks = dc.data_size >> 9;
|
||||
ok = true;
|
||||
flags |= P8_DC42;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -119,6 +121,7 @@ Disk *Disk::OpenFile(const char *file, bool dos_order)
|
||||
blocks = udi.data_blocks;
|
||||
offset = udi.data_offset;
|
||||
ok = true;
|
||||
flags |= P8_2MG;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -141,7 +144,7 @@ Disk *Disk::OpenFile(const char *file, bool dos_order)
|
||||
d->_data = (uint8_t *)map;
|
||||
d->_blocks = blocks;
|
||||
d->_offset = offset;
|
||||
d->_dosorder = dos_order;
|
||||
d->_flags = flags;
|
||||
}
|
||||
|
||||
}
|
||||
@ -168,7 +171,8 @@ int Disk::Normalize(FileEntry &f, unsigned fork, ExtendedEntry *ee)
|
||||
ok = Read(f.key_pointer, buffer);
|
||||
if (ok < 0) return ok;
|
||||
|
||||
ExtendedEntry e(buffer);
|
||||
ExtendedEntry e;
|
||||
e.Load(buffer);
|
||||
|
||||
if (fork == 0)
|
||||
{
|
||||
@ -197,7 +201,7 @@ int Disk::Read(unsigned block, void *buffer)
|
||||
if (block > _blocks) return -P8_INVALID_BLOCK;
|
||||
|
||||
|
||||
if (_dosorder)
|
||||
if (_flags & P8_DOS_ORDER)
|
||||
{
|
||||
static unsigned do_map[] = {0x00, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x0f };
|
||||
|
||||
@ -233,7 +237,7 @@ void *Disk::ReadFile(const FileEntry &f, unsigned fork, uint32_t *size, int *err
|
||||
SET_ERROR(0);
|
||||
SET_SIZE(0);
|
||||
|
||||
if (fork != DATA_FORK && fork != RESOURCE_FORK)
|
||||
if (fork != P8_DATA_FORK && fork != P8_RESOURCE_FORK)
|
||||
{
|
||||
SET_ERROR(-P8_INVALID_FORK);
|
||||
return NULL;
|
||||
@ -252,7 +256,7 @@ void *Disk::ReadFile(const FileEntry &f, unsigned fork, uint32_t *size, int *err
|
||||
case SEEDLING_FILE:
|
||||
case SAPLING_FILE:
|
||||
case TREE_FILE:
|
||||
if (fork != DATA_FORK)
|
||||
if (fork != P8_DATA_FORK)
|
||||
{
|
||||
SET_ERROR(1);
|
||||
return NULL;
|
||||
@ -271,9 +275,10 @@ void *Disk::ReadFile(const FileEntry &f, unsigned fork, uint32_t *size, int *err
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ExtendedEntry entry(buffer);
|
||||
ExtendedEntry entry;
|
||||
entry.Load(buffer);
|
||||
|
||||
if (fork == DATA_FORK)
|
||||
if (fork == P8_DATA_FORK)
|
||||
{
|
||||
storage_type = entry.dataFork.storage_type;
|
||||
eof = entry.dataFork.eof;
|
||||
@ -362,9 +367,7 @@ int Disk::ReadFile(const FileEntry &f, void *buffer)
|
||||
|
||||
|
||||
int Disk::ReadIndex(unsigned block, void *buffer, unsigned level, off_t offset, unsigned blocks)
|
||||
{
|
||||
// does not yet handle sparse files (completely).
|
||||
|
||||
{
|
||||
if (level == 0)
|
||||
{
|
||||
// data level
|
||||
@ -401,12 +404,22 @@ int Disk::ReadIndex(unsigned block, void *buffer, unsigned level, off_t offset,
|
||||
return -P8_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int ok;
|
||||
|
||||
uint8_t key[BLOCK_SIZE];
|
||||
ok = Read(block, key);
|
||||
if (ok < 0 ) return ok;
|
||||
|
||||
if (block) // not sparse.
|
||||
{
|
||||
ok = Read(block, key);
|
||||
if (ok < 0 ) return ok;
|
||||
}
|
||||
else
|
||||
{
|
||||
// sparse -- zero it out so code below works w/o special cases.
|
||||
bzero(key, BLOCK_SIZE);
|
||||
}
|
||||
|
||||
for (unsigned i = first; blocks; i++)
|
||||
{
|
||||
@ -446,7 +459,8 @@ int Disk::ReadVolume(VolumeEntry *volume, std::vector<FileEntry> *files)
|
||||
prev = load16(&buffer[0x00]);
|
||||
next = load16(&buffer[0x02]);
|
||||
|
||||
VolumeEntry v(buffer + 0x04);
|
||||
VolumeEntry v;
|
||||
v.Load(buffer + 0x04);
|
||||
|
||||
if (v.storage_type != VOLUME_HEADER) return -P8_INVALID_STORAGE_TYPE;
|
||||
|
||||
@ -467,7 +481,8 @@ int Disk::ReadVolume(VolumeEntry *volume, std::vector<FileEntry> *files)
|
||||
if ( (buffer[0x04 + v.entry_length * index] >> 4) != DELETED_FILE)
|
||||
{
|
||||
unsigned offset = v.entry_length * index + 0x4;
|
||||
FileEntry f(buffer + offset);
|
||||
FileEntry f;
|
||||
f.Load(buffer + offset);
|
||||
f.address = (block << 9) + offset;
|
||||
|
||||
files->push_back(f);
|
||||
@ -521,7 +536,8 @@ int Disk::ReadDirectory(unsigned block, SubdirEntry *dir, std::vector<FileEntry>
|
||||
prev = load16(&buffer[0x00]);
|
||||
next = load16(&buffer[0x02]);
|
||||
|
||||
SubdirEntry v(buffer + 0x04);
|
||||
SubdirEntry v;
|
||||
v.Load(buffer + 0x04);
|
||||
|
||||
if (v.storage_type != SUBDIR_HEADER) return -P8_INVALID_STORAGE_TYPE;
|
||||
|
||||
@ -543,7 +559,8 @@ int Disk::ReadDirectory(unsigned block, SubdirEntry *dir, std::vector<FileEntry>
|
||||
if ( (buffer[0x04 + v.entry_length * index] >> 4) != DELETED_FILE)
|
||||
{
|
||||
unsigned offset = v.entry_length * index + 0x4;
|
||||
FileEntry f(buffer + offset);
|
||||
FileEntry f;
|
||||
f.Load(buffer + offset);
|
||||
f.address = (block << 9) + offset;
|
||||
|
||||
files->push_back(f);
|
||||
|
16
Disk.h
16
Disk.h
@ -27,11 +27,19 @@ enum {
|
||||
};
|
||||
|
||||
enum {
|
||||
DATA_FORK = 0,
|
||||
RESOURCE_FORK = 1
|
||||
P8_DATA_FORK = 0,
|
||||
P8_RESOURCE_FORK = 1
|
||||
};
|
||||
|
||||
|
||||
/* flags */
|
||||
enum {
|
||||
P8_DOS_ORDER = 1,
|
||||
P8_2MG = 2,
|
||||
P8_DC42 = 4
|
||||
|
||||
};
|
||||
|
||||
|
||||
class Disk {
|
||||
|
||||
@ -39,7 +47,7 @@ public:
|
||||
~Disk();
|
||||
|
||||
//static Disk *Open2MG(const char *file);
|
||||
static Disk *OpenFile(const char *file, bool dos_order);
|
||||
static Disk *OpenFile(const char *file, unsigned flags);
|
||||
|
||||
|
||||
int Normalize(FileEntry &f, unsigned fork, ExtendedEntry *ee = NULL);
|
||||
@ -62,7 +70,7 @@ private:
|
||||
unsigned _blocks;
|
||||
size_t _size;
|
||||
|
||||
bool _dosorder;
|
||||
unsigned _flags;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
47
File.cpp
47
File.cpp
@ -25,7 +25,7 @@
|
||||
* o Year values from 40 to 99 represent 1940 through 1999
|
||||
* o Year values from 0 to 39 represent 2000 through 2039
|
||||
*/
|
||||
inline time_t timeToUnix(unsigned yymmdd, unsigned hhmm)
|
||||
static time_t timeToUnix(unsigned yymmdd, unsigned hhmm)
|
||||
{
|
||||
if (yymmdd == 0) return 0;
|
||||
|
||||
@ -46,21 +46,7 @@ inline time_t timeToUnix(unsigned yymmdd, unsigned hhmm)
|
||||
|
||||
|
||||
|
||||
FileEntry::FileEntry()
|
||||
{
|
||||
bzero(this, sizeof(FileEntry));
|
||||
}
|
||||
FileEntry::FileEntry(const FileEntry& f)
|
||||
{
|
||||
*this = f;
|
||||
}
|
||||
FileEntry::FileEntry(const FileEntry *f)
|
||||
{
|
||||
if (f) *this = *f;
|
||||
else bzero(this, sizeof(FileEntry));
|
||||
}
|
||||
|
||||
FileEntry::FileEntry(const void *data)
|
||||
bool FileEntry::Load(const void *data)
|
||||
{
|
||||
const uint8_t *cp = (const uint8_t *)data;
|
||||
|
||||
@ -107,15 +93,14 @@ FileEntry::FileEntry(const void *data)
|
||||
last_mod = timeToUnix(load16(&cp[0x21]), load16(&cp[0x23]));
|
||||
|
||||
header_pointer = load16(&cp[0x25]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
ExtendedEntry::ExtendedEntry()
|
||||
{
|
||||
bzero(this, sizeof(ExtendedEntry));
|
||||
}
|
||||
|
||||
ExtendedEntry::ExtendedEntry(const void *data)
|
||||
|
||||
bool ExtendedEntry::Load(const void *data)
|
||||
{
|
||||
const uint8_t *cp = (const uint8_t *)data;
|
||||
|
||||
@ -159,17 +144,12 @@ ExtendedEntry::ExtendedEntry(const void *data)
|
||||
}
|
||||
}
|
||||
//
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
VolumeEntry::VolumeEntry()
|
||||
{
|
||||
bzero(this, sizeof(VolumeEntry));
|
||||
}
|
||||
|
||||
|
||||
VolumeEntry::VolumeEntry(const void *data)
|
||||
bool VolumeEntry::Load(const void *data)
|
||||
{
|
||||
const uint8_t *cp = (const uint8_t *)data;
|
||||
|
||||
@ -216,17 +196,14 @@ VolumeEntry::VolumeEntry(const void *data)
|
||||
bit_map_pointer = load16(&cp[0x23]);
|
||||
|
||||
total_blocks = load16(&cp[0x25]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
SubdirEntry::SubdirEntry()
|
||||
{
|
||||
bzero(this, sizeof(SubdirEntry));
|
||||
}
|
||||
|
||||
|
||||
SubdirEntry::SubdirEntry(const void *data)
|
||||
bool SubdirEntry::Load(const void *data)
|
||||
{
|
||||
const uint8_t *cp = (const uint8_t *)data;
|
||||
|
||||
@ -275,4 +252,6 @@ SubdirEntry::SubdirEntry(const void *data)
|
||||
parent_entry = cp[0x25];
|
||||
|
||||
parent_entry_length = cp[0x26];
|
||||
|
||||
return true;
|
||||
}
|
||||
|
24
File.h
24
File.h
@ -42,11 +42,7 @@ enum {
|
||||
class FileEntry {
|
||||
public:
|
||||
|
||||
FileEntry();
|
||||
FileEntry(const FileEntry& f);
|
||||
FileEntry(const FileEntry *f);
|
||||
|
||||
FileEntry(const void *data);
|
||||
bool Load(const void *data);
|
||||
|
||||
unsigned storage_type;
|
||||
unsigned name_length;
|
||||
@ -66,13 +62,6 @@ public:
|
||||
uint32_t address;
|
||||
};
|
||||
|
||||
#if 0
|
||||
class BlockList {
|
||||
public:
|
||||
unsigned prev_block;
|
||||
unsigned next_block;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
struct MiniEntry {
|
||||
@ -86,8 +75,8 @@ struct MiniEntry {
|
||||
|
||||
class ExtendedEntry {
|
||||
public:
|
||||
ExtendedEntry();
|
||||
ExtendedEntry(const void *data);
|
||||
|
||||
bool Load(const void *data);
|
||||
|
||||
MiniEntry dataFork;
|
||||
MiniEntry resourceFork;
|
||||
@ -99,8 +88,8 @@ public:
|
||||
|
||||
class VolumeEntry {
|
||||
public:
|
||||
VolumeEntry();
|
||||
VolumeEntry(const void *data);
|
||||
|
||||
bool Load(const void *data);
|
||||
|
||||
unsigned storage_type;
|
||||
unsigned name_length;
|
||||
@ -123,8 +112,7 @@ public:
|
||||
class SubdirEntry {
|
||||
public:
|
||||
|
||||
SubdirEntry();
|
||||
SubdirEntry(const void *data);
|
||||
bool Load(const void *data);
|
||||
|
||||
unsigned storage_type;
|
||||
unsigned name_length;
|
||||
|
@ -282,7 +282,8 @@
|
||||
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
|
||||
<array>
|
||||
<array>
|
||||
<integer>17</integer>
|
||||
<integer>7</integer>
|
||||
<integer>1</integer>
|
||||
<integer>0</integer>
|
||||
</array>
|
||||
</array>
|
||||
@ -308,7 +309,7 @@
|
||||
<real>224</real>
|
||||
</array>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>189 537 1212 568 0 0 1920 1178 </string>
|
||||
<string>75 119 1212 568 0 0 1920 1178 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXSmartGroupTreeModule</string>
|
||||
@ -324,7 +325,7 @@
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
<string>1CE0B20306471E060097A5F4</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>DiskCopy42.cpp</string>
|
||||
<string>File.h</string>
|
||||
<key>PBXSplitModuleInNavigatorKey</key>
|
||||
<dict>
|
||||
<key>Split0</key>
|
||||
@ -332,27 +333,29 @@
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
<string>1CE0B20406471E060097A5F4</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>DiskCopy42.cpp</string>
|
||||
<string>File.h</string>
|
||||
<key>_historyCapacity</key>
|
||||
<integer>0</integer>
|
||||
<key>bookmark</key>
|
||||
<string>B6C786F40F2A612600053681</string>
|
||||
<string>B64E30810F2C0D2F000543FE</string>
|
||||
<key>history</key>
|
||||
<array>
|
||||
<string>B6614B050EFF5F280073C4E7</string>
|
||||
<string>B679E4B60F02EFA200FB3F0C</string>
|
||||
<string>B6B767C80F0FFA3900D819C9</string>
|
||||
<string>B642F1530F133632001F7696</string>
|
||||
<string>B642F1540F133632001F7696</string>
|
||||
<string>B642F16A0F1341D4001F7696</string>
|
||||
<string>B61B78A20F16EA8700C3E140</string>
|
||||
<string>B6C786E50F2A5FF300053681</string>
|
||||
<string>B6C786E60F2A5FF300053681</string>
|
||||
<string>B6C786E70F2A5FF300053681</string>
|
||||
<string>B6C786EE0F2A612600053681</string>
|
||||
<string>B6C786EF0F2A612600053681</string>
|
||||
<string>B6C786F00F2A612600053681</string>
|
||||
<string>B6B7A85F0F140BBB001024D2</string>
|
||||
<string>B6C786F70F2A64CC00053681</string>
|
||||
<string>B6C786F80F2A64CC00053681</string>
|
||||
<string>B6C786F90F2A64CC00053681</string>
|
||||
<string>B6C786FA0F2A64CC00053681</string>
|
||||
<string>B6F4740F0F2ACB4700CB75DA</string>
|
||||
<string>B6E345420F2BB60B00B7FC78</string>
|
||||
<string>B6E345610F2BC07F00B7FC78</string>
|
||||
<string>B64E307D0F2C0D2F000543FE</string>
|
||||
<string>B64E307E0F2C0D2F000543FE</string>
|
||||
<string>B6614B050EFF5F280073C4E7</string>
|
||||
</array>
|
||||
<key>prevStack</key>
|
||||
<array>
|
||||
@ -366,12 +369,14 @@
|
||||
<string>B6B17F950F1136550060F7AA</string>
|
||||
<string>B6B17FA80F1140160060F7AA</string>
|
||||
<string>B6B7A8600F140BBB001024D2</string>
|
||||
<string>B6C786E80F2A5FF300053681</string>
|
||||
<string>B6C786E90F2A5FF300053681</string>
|
||||
<string>B6C786EA0F2A5FF300053681</string>
|
||||
<string>B6C786F10F2A612600053681</string>
|
||||
<string>B6C786F20F2A612600053681</string>
|
||||
<string>B6C786F30F2A612600053681</string>
|
||||
<string>B6C786FD0F2A64CC00053681</string>
|
||||
<string>B6F474110F2ACB4700CB75DA</string>
|
||||
<string>B64E307F0F2C0D2F000543FE</string>
|
||||
<string>B64E30800F2C0D2F000543FE</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>SplitCount</key>
|
||||
@ -385,7 +390,7 @@
|
||||
<key>Frame</key>
|
||||
<string>{{0, 0}, {944, 349}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>189 537 1212 568 0 0 1920 1178 </string>
|
||||
<string>75 119 1212 568 0 0 1920 1178 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXNavigatorGroup</string>
|
||||
@ -405,7 +410,7 @@
|
||||
<key>Frame</key>
|
||||
<string>{{0, 354}, {944, 173}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>189 537 1212 568 0 0 1920 1178 </string>
|
||||
<string>75 119 1212 568 0 0 1920 1178 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>XCDetailModule</string>
|
||||
@ -429,9 +434,9 @@
|
||||
</array>
|
||||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>B6C786AB0F2A598F00053681</string>
|
||||
<string>B64E30820F2C0D2F000543FE</string>
|
||||
<string>1CE0B1FE06471DED0097A5F4</string>
|
||||
<string>B6C786AC0F2A598F00053681</string>
|
||||
<string>B64E30830F2C0D2F000543FE</string>
|
||||
<string>1CE0B20306471E060097A5F4</string>
|
||||
<string>1CE0B20506471E060097A5F4</string>
|
||||
</array>
|
||||
@ -565,12 +570,11 @@
|
||||
<integer>5</integer>
|
||||
<key>WindowOrderList</key>
|
||||
<array>
|
||||
<string>B60E918C0EFD7E1E000E4348</string>
|
||||
<string>1CD10A99069EF8BA00B06720</string>
|
||||
<string>/Users/kelvin/Projects/profuse/profuse.xcodeproj</string>
|
||||
<string>B64E30840F2C0D2F000543FE</string>
|
||||
</array>
|
||||
<key>WindowString</key>
|
||||
<string>189 537 1212 568 0 0 1920 1178 </string>
|
||||
<string>75 119 1212 568 0 0 1920 1178 </string>
|
||||
<key>WindowToolsV3</key>
|
||||
<array>
|
||||
<dict>
|
||||
@ -593,7 +597,7 @@
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
<string>1CD0528F0623707200166675</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>profuse_xattr.cpp</string>
|
||||
<string>profuse_file.cpp</string>
|
||||
<key>StatusBarVisibility</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@ -602,7 +606,7 @@
|
||||
<key>Frame</key>
|
||||
<string>{{0, 0}, {857, 500}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>352 195 857 922 0 0 1920 1178 </string>
|
||||
<string>621 136 857 922 0 0 1920 1178 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXNavigatorGroup</string>
|
||||
@ -628,7 +632,7 @@
|
||||
<key>Frame</key>
|
||||
<string>{{0, 505}, {857, 376}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>352 195 857 922 0 0 1920 1178 </string>
|
||||
<string>621 136 857 922 0 0 1920 1178 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXBuildResultsModule</string>
|
||||
@ -651,14 +655,14 @@
|
||||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>B60E918C0EFD7E1E000E4348</string>
|
||||
<string>B6C786CB0F2A5E8000053681</string>
|
||||
<string>B64E30630F2C08EF000543FE</string>
|
||||
<string>1CD0528F0623707200166675</string>
|
||||
<string>XCMainBuildResultsModuleGUID</string>
|
||||
</array>
|
||||
<key>ToolbarConfiguration</key>
|
||||
<string>xcode.toolbar.config.buildV3</string>
|
||||
<key>WindowString</key>
|
||||
<string>352 195 857 922 0 0 1920 1178 </string>
|
||||
<string>621 136 857 922 0 0 1920 1178 </string>
|
||||
<key>WindowToolGUID</key>
|
||||
<string>B60E918C0EFD7E1E000E4348</string>
|
||||
<key>WindowToolIsVisible</key>
|
||||
@ -771,13 +775,13 @@
|
||||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>1CD10A99069EF8BA00B06720</string>
|
||||
<string>B6C786AD0F2A598F00053681</string>
|
||||
<string>B64E30640F2C08EF000543FE</string>
|
||||
<string>1C162984064C10D400B95A72</string>
|
||||
<string>B6C786AE0F2A598F00053681</string>
|
||||
<string>B6C786AF0F2A598F00053681</string>
|
||||
<string>B6C786B00F2A598F00053681</string>
|
||||
<string>B6C786B10F2A598F00053681</string>
|
||||
<string>B6C786B20F2A598F00053681</string>
|
||||
<string>B64E30650F2C08EF000543FE</string>
|
||||
<string>B64E30660F2C08EF000543FE</string>
|
||||
<string>B64E30670F2C08EF000543FE</string>
|
||||
<string>B64E30680F2C08EF000543FE</string>
|
||||
<string>B64E30690F2C08EF000543FE</string>
|
||||
</array>
|
||||
<key>ToolbarConfiguration</key>
|
||||
<string>xcode.toolbar.config.debugV3</string>
|
||||
@ -1003,7 +1007,7 @@
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
<string>1C78EAB2065D492600B07095</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>main.cpp</string>
|
||||
<string>File.cpp</string>
|
||||
<key>StatusBarVisibility</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@ -1080,7 +1084,7 @@
|
||||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>B60E929F0EFDA500000E4348</string>
|
||||
<string>B61B78A60F16EA8700C3E140</string>
|
||||
<string>B6E345600F2BC07D00B7FC78</string>
|
||||
<string>1C78EAB2065D492600B07095</string>
|
||||
<string>1CD052920623707200166675</string>
|
||||
</array>
|
||||
@ -1091,7 +1095,7 @@
|
||||
<key>WindowToolGUID</key>
|
||||
<string>B60E929F0EFDA500000E4348</string>
|
||||
<key>WindowToolIsVisible</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Identifier</key>
|
||||
|
@ -10,7 +10,7 @@
|
||||
);
|
||||
breakpoints = (
|
||||
B60E91C10EFD8049000E4348 /* xmain.cpp:129 */,
|
||||
B60E92720EFDA086000E4348 /* File.cpp:88 */,
|
||||
B60E92720EFDA086000E4348 /* File.cpp:74 */,
|
||||
B6D81E5B0EFDE859000219B7 /* xmain.cpp:163 */,
|
||||
B6AE1CFF0F0335FC00D36ADB /* main.cpp:20 */,
|
||||
);
|
||||
@ -115,8 +115,8 @@
|
||||
PBXFileDataSource_Warnings_ColumnID,
|
||||
);
|
||||
};
|
||||
PBXPerProjectTemplateStateSaveDate = 254433671;
|
||||
PBXWorkspaceStateSaveDate = 254433671;
|
||||
PBXPerProjectTemplateStateSaveDate = 254545182;
|
||||
PBXWorkspaceStateSaveDate = 254545182;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
B60E917F0EFD7E1E000E4348 = B60E917F0EFD7E1E000E4348 /* PBXTextBookmark */;
|
||||
@ -124,47 +124,40 @@
|
||||
B60E91810EFD7E1E000E4348 = B60E91810EFD7E1E000E4348 /* PBXTextBookmark */;
|
||||
B60E922B0EFD94CA000E4348 = B60E922B0EFD94CA000E4348 /* PBXTextBookmark */;
|
||||
B60E929C0EFDA500000E4348 = B60E929C0EFDA500000E4348 /* PBXTextBookmark */;
|
||||
B61B78A20F16EA8700C3E140 = B61B78A20F16EA8700C3E140 /* PBXTextBookmark */;
|
||||
B61B78A40F16EA8700C3E140 = B61B78A40F16EA8700C3E140 /* PBXTextBookmark */;
|
||||
B6340C7B0F22C271008931E1 = B6340C7B0F22C271008931E1 /* PBXTextBookmark */;
|
||||
B642F1530F133632001F7696 = B642F1530F133632001F7696 /* PBXTextBookmark */;
|
||||
B642F1540F133632001F7696 = B642F1540F133632001F7696 /* PBXTextBookmark */;
|
||||
B642F16A0F1341D4001F7696 = B642F16A0F1341D4001F7696 /* PBXTextBookmark */;
|
||||
B64E306A0F2C08F3000543FE = B64E306A0F2C08F3000543FE /* PBXTextBookmark */;
|
||||
B64E306B0F2C08F3000543FE = B64E306B0F2C08F3000543FE /* PBXTextBookmark */;
|
||||
B64E306C0F2C08F3000543FE = B64E306C0F2C08F3000543FE /* PBXTextBookmark */;
|
||||
B64E306F0F2C0900000543FE = B64E306F0F2C0900000543FE /* PBXTextBookmark */;
|
||||
B64E307D0F2C0D2F000543FE /* PBXTextBookmark */ = B64E307D0F2C0D2F000543FE /* PBXTextBookmark */;
|
||||
B64E307E0F2C0D2F000543FE /* PBXTextBookmark */ = B64E307E0F2C0D2F000543FE /* PBXTextBookmark */;
|
||||
B64E307F0F2C0D2F000543FE /* PBXTextBookmark */ = B64E307F0F2C0D2F000543FE /* PBXTextBookmark */;
|
||||
B64E30800F2C0D2F000543FE /* PBXTextBookmark */ = B64E30800F2C0D2F000543FE /* PBXTextBookmark */;
|
||||
B64E30810F2C0D2F000543FE /* PBXTextBookmark */ = B64E30810F2C0D2F000543FE /* PBXTextBookmark */;
|
||||
B6614B050EFF5F280073C4E7 = B6614B050EFF5F280073C4E7 /* PBXTextBookmark */;
|
||||
B679E4B60F02EFA200FB3F0C = B679E4B60F02EFA200FB3F0C /* PBXTextBookmark */;
|
||||
B679E4BB0F02EFA200FB3F0C = B679E4BB0F02EFA200FB3F0C /* PBXTextBookmark */;
|
||||
B6B17F940F1136550060F7AA = B6B17F940F1136550060F7AA /* PBXTextBookmark */;
|
||||
B6B17F950F1136550060F7AA = B6B17F950F1136550060F7AA /* PBXTextBookmark */;
|
||||
B6B17FA80F1140160060F7AA = B6B17FA80F1140160060F7AA /* PBXTextBookmark */;
|
||||
B6B767C80F0FFA3900D819C9 = B6B767C80F0FFA3900D819C9 /* PBXTextBookmark */;
|
||||
B6B767CB0F0FFA3900D819C9 = B6B767CB0F0FFA3900D819C9 /* PBXTextBookmark */;
|
||||
B6B7A85F0F140BBB001024D2 = B6B7A85F0F140BBB001024D2 /* PBXTextBookmark */;
|
||||
B6B7A8600F140BBB001024D2 = B6B7A8600F140BBB001024D2 /* PBXTextBookmark */;
|
||||
B6C786AA0F2A598F00053681 /* PBXTextBookmark */ = B6C786AA0F2A598F00053681 /* PBXTextBookmark */;
|
||||
B6C786C90F2A5E8000053681 /* PBXTextBookmark */ = B6C786C90F2A5E8000053681 /* PBXTextBookmark */;
|
||||
B6C786CA0F2A5E8000053681 /* PBXTextBookmark */ = B6C786CA0F2A5E8000053681 /* PBXTextBookmark */;
|
||||
B6C786DD0F2A5FED00053681 /* PBXTextBookmark */ = B6C786DD0F2A5FED00053681 /* PBXTextBookmark */;
|
||||
B6C786DE0F2A5FED00053681 /* PBXTextBookmark */ = B6C786DE0F2A5FED00053681 /* PBXTextBookmark */;
|
||||
B6C786DF0F2A5FED00053681 /* PBXTextBookmark */ = B6C786DF0F2A5FED00053681 /* PBXTextBookmark */;
|
||||
B6C786E00F2A5FED00053681 /* PBXTextBookmark */ = B6C786E00F2A5FED00053681 /* PBXTextBookmark */;
|
||||
B6C786E10F2A5FED00053681 /* PBXTextBookmark */ = B6C786E10F2A5FED00053681 /* PBXTextBookmark */;
|
||||
B6C786E20F2A5FED00053681 /* PBXTextBookmark */ = B6C786E20F2A5FED00053681 /* PBXTextBookmark */;
|
||||
B6C786E30F2A5FED00053681 /* PBXTextBookmark */ = B6C786E30F2A5FED00053681 /* PBXTextBookmark */;
|
||||
B6C786E40F2A5FED00053681 /* PBXTextBookmark */ = B6C786E40F2A5FED00053681 /* PBXTextBookmark */;
|
||||
B6C786E50F2A5FF300053681 /* PBXTextBookmark */ = B6C786E50F2A5FF300053681 /* PBXTextBookmark */;
|
||||
B6C786E60F2A5FF300053681 /* PBXTextBookmark */ = B6C786E60F2A5FF300053681 /* PBXTextBookmark */;
|
||||
B6C786E70F2A5FF300053681 /* PBXTextBookmark */ = B6C786E70F2A5FF300053681 /* PBXTextBookmark */;
|
||||
B6C786E80F2A5FF300053681 /* PBXTextBookmark */ = B6C786E80F2A5FF300053681 /* PBXTextBookmark */;
|
||||
B6C786E90F2A5FF300053681 /* PBXTextBookmark */ = B6C786E90F2A5FF300053681 /* PBXTextBookmark */;
|
||||
B6C786EA0F2A5FF300053681 /* PBXTextBookmark */ = B6C786EA0F2A5FF300053681 /* PBXTextBookmark */;
|
||||
B6C786EB0F2A5FF300053681 /* PBXTextBookmark */ = B6C786EB0F2A5FF300053681 /* PBXTextBookmark */;
|
||||
B6C786EE0F2A612600053681 /* PBXTextBookmark */ = B6C786EE0F2A612600053681 /* PBXTextBookmark */;
|
||||
B6C786EF0F2A612600053681 /* PBXTextBookmark */ = B6C786EF0F2A612600053681 /* PBXTextBookmark */;
|
||||
B6C786F00F2A612600053681 /* PBXTextBookmark */ = B6C786F00F2A612600053681 /* PBXTextBookmark */;
|
||||
B6C786F10F2A612600053681 /* PBXTextBookmark */ = B6C786F10F2A612600053681 /* PBXTextBookmark */;
|
||||
B6C786F20F2A612600053681 /* PBXTextBookmark */ = B6C786F20F2A612600053681 /* PBXTextBookmark */;
|
||||
B6C786F30F2A612600053681 /* PBXTextBookmark */ = B6C786F30F2A612600053681 /* PBXTextBookmark */;
|
||||
B6C786F40F2A612600053681 /* PBXTextBookmark */ = B6C786F40F2A612600053681 /* PBXTextBookmark */;
|
||||
B6C786E50F2A5FF300053681 = B6C786E50F2A5FF300053681 /* PBXTextBookmark */;
|
||||
B6C786E90F2A5FF300053681 = B6C786E90F2A5FF300053681 /* PBXTextBookmark */;
|
||||
B6C786EA0F2A5FF300053681 = B6C786EA0F2A5FF300053681 /* PBXTextBookmark */;
|
||||
B6C786EE0F2A612600053681 = B6C786EE0F2A612600053681 /* PBXTextBookmark */;
|
||||
B6C786EF0F2A612600053681 = B6C786EF0F2A612600053681 /* PBXTextBookmark */;
|
||||
B6C786F20F2A612600053681 = B6C786F20F2A612600053681 /* PBXTextBookmark */;
|
||||
B6C786F30F2A612600053681 = B6C786F30F2A612600053681 /* PBXTextBookmark */;
|
||||
B6C786F70F2A64CC00053681 = B6C786F70F2A64CC00053681 /* PBXTextBookmark */;
|
||||
B6C786F80F2A64CC00053681 = B6C786F80F2A64CC00053681 /* PBXTextBookmark */;
|
||||
B6C786F90F2A64CC00053681 = B6C786F90F2A64CC00053681 /* PBXTextBookmark */;
|
||||
B6C786FA0F2A64CC00053681 = B6C786FA0F2A64CC00053681 /* PBXTextBookmark */;
|
||||
B6C786FD0F2A64CC00053681 = B6C786FD0F2A64CC00053681 /* PBXTextBookmark */;
|
||||
B6E345420F2BB60B00B7FC78 = B6E345420F2BB60B00B7FC78 /* PBXTextBookmark */;
|
||||
B6E345610F2BC07F00B7FC78 = B6E345610F2BC07F00B7FC78 /* PBXTextBookmark */;
|
||||
B6F4740F0F2ACB4700CB75DA = B6F4740F0F2ACB4700CB75DA /* PBXTextBookmark */;
|
||||
B6F474110F2ACB4700CB75DA = B6F474110F2ACB4700CB75DA /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = B60E91500EFB3628000E4348 /* Source Control */;
|
||||
userBuildSettings = {
|
||||
@ -217,17 +210,17 @@
|
||||
};
|
||||
B60E914D0EFB3627000E4348 /* File.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {496, 2030}}";
|
||||
sepNavSelRange = "{25, 0}";
|
||||
sepNavVisRange = "{1119, 1284}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {883, 1792}}";
|
||||
sepNavSelRange = "{414, 0}";
|
||||
sepNavVisRange = "{1197, 440}";
|
||||
sepNavWindowFrame = "{{95, -86}, {555, 1173}}";
|
||||
};
|
||||
};
|
||||
B60E914E0EFB3628000E4348 /* File.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {883, 3822}}";
|
||||
sepNavSelRange = "{3668, 0}";
|
||||
sepNavVisRange = "{1287, 532}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {883, 3682}}";
|
||||
sepNavSelRange = "{3323, 0}";
|
||||
sepNavVisRange = "{1285, 523}";
|
||||
sepNavWindowFrame = "{{667, -9}, {555, 1173}}";
|
||||
};
|
||||
};
|
||||
@ -245,17 +238,17 @@
|
||||
};
|
||||
B60E91530EFB51FE000E4348 /* Disk.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {633, 1043}}";
|
||||
sepNavSelRange = "{25, 0}";
|
||||
sepNavVisRange = "{0, 1184}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1250, 1092}}";
|
||||
sepNavSelRange = "{1300, 0}";
|
||||
sepNavVisRange = "{178, 1128}";
|
||||
sepNavWindowFrame = "{{77, 7}, {692, 1171}}";
|
||||
};
|
||||
};
|
||||
B60E91540EFB51FE000E4348 /* Disk.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {633, 7826}}";
|
||||
sepNavSelRange = "{9022, 68}";
|
||||
sepNavVisRange = "{8353, 1853}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {883, 8652}}";
|
||||
sepNavSelRange = "{5288, 0}";
|
||||
sepNavVisRange = "{5127, 457}";
|
||||
sepNavWindowFrame = "{{943, -6}, {692, 1171}}";
|
||||
};
|
||||
};
|
||||
@ -324,7 +317,7 @@
|
||||
vrLen = 327;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B60E92720EFDA086000E4348 /* File.cpp:88 */ = {
|
||||
B60E92720EFDA086000E4348 /* File.cpp:74 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
@ -336,7 +329,7 @@
|
||||
functionName = "FileEntry::FileEntry(const void *data)";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 88;
|
||||
lineNumber = 74;
|
||||
location = "ProDOS-Fuse";
|
||||
modificationTime = 251949619.113693;
|
||||
state = 2;
|
||||
@ -346,67 +339,27 @@
|
||||
fRef = B60E914E0EFB3628000E4348 /* File.cpp */;
|
||||
name = "File.cpp: 106";
|
||||
rLen = 0;
|
||||
rLoc = 3668;
|
||||
rLoc = 3323;
|
||||
rType = 0;
|
||||
vrLen = 345;
|
||||
vrLoc = 1359;
|
||||
};
|
||||
B61B78A20F16EA8700C3E140 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
|
||||
name = "Disk.cpp: 328";
|
||||
rLen = 0;
|
||||
rLoc = 7422;
|
||||
rType = 0;
|
||||
vrLen = 351;
|
||||
vrLoc = 31;
|
||||
};
|
||||
B61B78A40F16EA8700C3E140 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B679E4A70F02E79300FB3F0C /* main.cpp */;
|
||||
name = "main.cpp: 33";
|
||||
rLen = 0;
|
||||
rLoc = 323;
|
||||
rType = 0;
|
||||
vrLen = 330;
|
||||
vrLoc = 441;
|
||||
};
|
||||
B6340C7B0F22C271008931E1 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B679E4A70F02E79300FB3F0C /* main.cpp */;
|
||||
name = "main.cpp: 33";
|
||||
rLen = 0;
|
||||
rLoc = 323;
|
||||
rType = 0;
|
||||
vrLen = 330;
|
||||
vrLoc = 441;
|
||||
};
|
||||
B642F1290F132FA3001F7696 /* UniversalDiskImage.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1353, 796}}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1250, 831}}";
|
||||
sepNavSelRange = "{217, 34}";
|
||||
sepNavVisRange = "{0, 707}";
|
||||
sepNavVisRange = "{0, 708}";
|
||||
sepNavWindowFrame = "{{15, 249}, {1412, 924}}";
|
||||
};
|
||||
};
|
||||
B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {883, 728}}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1250, 831}}";
|
||||
sepNavSelRange = "{820, 0}";
|
||||
sepNavVisRange = "{500, 463}";
|
||||
sepNavVisRange = "{0, 966}";
|
||||
sepNavWindowFrame = "{{668, 219}, {1412, 924}}";
|
||||
};
|
||||
};
|
||||
B642F1530F133632001F7696 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E914E0EFB3628000E4348 /* File.cpp */;
|
||||
name = "File.cpp: 176";
|
||||
rLen = 0;
|
||||
rLoc = 3668;
|
||||
rType = 0;
|
||||
vrLen = 532;
|
||||
vrLoc = 1287;
|
||||
};
|
||||
B642F1540F133632001F7696 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6B17FA00F1138830060F7AA /* DiskCopy42.h */;
|
||||
@ -427,6 +380,94 @@
|
||||
vrLen = 313;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B64E306A0F2C08F3000543FE /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E914E0EFB3628000E4348 /* File.cpp */;
|
||||
name = "File.cpp: 176";
|
||||
rLen = 0;
|
||||
rLoc = 3323;
|
||||
rType = 0;
|
||||
vrLen = 532;
|
||||
vrLoc = 1287;
|
||||
};
|
||||
B64E306B0F2C08F3000543FE /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
comments = "error: 'DATA_FORK' was not declared in this scope";
|
||||
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
|
||||
rLen = 1;
|
||||
rLoc = 239;
|
||||
rType = 1;
|
||||
};
|
||||
B64E306C0F2C08F3000543FE /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E914E0EFB3628000E4348 /* File.cpp */;
|
||||
name = "File.cpp: 176";
|
||||
rLen = 0;
|
||||
rLoc = 3323;
|
||||
rType = 0;
|
||||
vrLen = 532;
|
||||
vrLoc = 1287;
|
||||
};
|
||||
B64E306F0F2C0900000543FE /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
|
||||
name = "Disk.cpp: 240";
|
||||
rLen = 0;
|
||||
rLoc = 5288;
|
||||
rType = 0;
|
||||
vrLen = 457;
|
||||
vrLoc = 5127;
|
||||
};
|
||||
B64E307D0F2C0D2F000543FE /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
|
||||
name = "Disk.cpp: 240";
|
||||
rLen = 0;
|
||||
rLoc = 5288;
|
||||
rType = 0;
|
||||
vrLen = 457;
|
||||
vrLoc = 5127;
|
||||
};
|
||||
B64E307E0F2C0D2F000543FE /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E914E0EFB3628000E4348 /* File.cpp */;
|
||||
name = "File.cpp: 156";
|
||||
rLen = 0;
|
||||
rLoc = 3323;
|
||||
rType = 0;
|
||||
vrLen = 523;
|
||||
vrLoc = 1285;
|
||||
};
|
||||
B64E307F0F2C0D2F000543FE /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
|
||||
name = "Disk.cpp: 240";
|
||||
rLen = 0;
|
||||
rLoc = 5288;
|
||||
rType = 0;
|
||||
vrLen = 457;
|
||||
vrLoc = 5127;
|
||||
};
|
||||
B64E30800F2C0D2F000543FE /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E914E0EFB3628000E4348 /* File.cpp */;
|
||||
name = "File.cpp: 156";
|
||||
rLen = 0;
|
||||
rLoc = 3323;
|
||||
rType = 0;
|
||||
vrLen = 523;
|
||||
vrLoc = 1285;
|
||||
};
|
||||
B64E30810F2C0D2F000543FE /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E914D0EFB3627000E4348 /* File.h */;
|
||||
name = "File.h: 30";
|
||||
rLen = 0;
|
||||
rLoc = 414;
|
||||
rType = 0;
|
||||
vrLen = 440;
|
||||
vrLoc = 1197;
|
||||
};
|
||||
B6614B050EFF5F280073C4E7 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E914D0EFB3627000E4348 /* File.h */;
|
||||
@ -439,22 +480,12 @@
|
||||
};
|
||||
B679E4A70F02E79300FB3F0C /* main.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1250, 3864}}";
|
||||
sepNavSelRange = "{284, 0}";
|
||||
sepNavVisRange = "{0, 950}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {759, 3948}}";
|
||||
sepNavSelRange = "{1950, 0}";
|
||||
sepNavVisRange = "{3049, 226}";
|
||||
sepNavWindowFrame = "{{342, 156}, {1412, 924}}";
|
||||
};
|
||||
};
|
||||
B679E4B60F02EFA200FB3F0C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E91530EFB51FE000E4348 /* Disk.h */;
|
||||
name = "Disk.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 342;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B679E4BB0F02EFA200FB3F0C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B679E4A70F02E79300FB3F0C /* main.cpp */;
|
||||
@ -488,21 +519,6 @@
|
||||
name = fuse_common.h;
|
||||
path = /usr/local/include/fuse/fuse_common.h;
|
||||
sourceTree = "<absolute>";
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {883, 4032}}";
|
||||
sepNavSelRange = "{6850, 63}";
|
||||
sepNavVisRange = "{5837, 708}";
|
||||
};
|
||||
};
|
||||
B6B17F940F1136550060F7AA /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6B17F820F103AA70060F7AA /* fuse_common.h */;
|
||||
name = "fuse_common.h: 36";
|
||||
rLen = 0;
|
||||
rLoc = 921;
|
||||
rType = 0;
|
||||
vrLen = 579;
|
||||
vrLoc = 535;
|
||||
};
|
||||
B6B17F950F1136550060F7AA /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
@ -560,16 +576,6 @@
|
||||
vrLen = 722;
|
||||
vrLoc = 2400;
|
||||
};
|
||||
B6B7A85F0F140BBB001024D2 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6B17FA10F1138830060F7AA /* DiskCopy42.cpp */;
|
||||
name = "DiskCopy42.cpp: 11";
|
||||
rLen = 0;
|
||||
rLoc = 150;
|
||||
rType = 0;
|
||||
vrLen = 333;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6B7A8600F140BBB001024D2 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6B17FA10F1138830060F7AA /* DiskCopy42.cpp */;
|
||||
@ -580,147 +586,41 @@
|
||||
vrLen = 333;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786AA0F2A598F00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B679E4A70F02E79300FB3F0C /* main.cpp */;
|
||||
name = "main.cpp: 33";
|
||||
rLen = 0;
|
||||
rLoc = 323;
|
||||
rType = 0;
|
||||
vrLen = 330;
|
||||
vrLoc = 441;
|
||||
};
|
||||
B6C786B30F2A59AF00053681 /* profuse.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1250, 831}}";
|
||||
sepNavSelRange = "{185, 0}";
|
||||
sepNavVisRange = "{0, 1380}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {796, 728}}";
|
||||
sepNavSelRange = "{1382, 0}";
|
||||
sepNavVisRange = "{243, 1139}";
|
||||
};
|
||||
};
|
||||
B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {796, 5194}}";
|
||||
sepNavSelRange = "{2396, 68}";
|
||||
sepNavVisRange = "{0, 546}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1250, 5138}}";
|
||||
sepNavSelRange = "{3730, 0}";
|
||||
sepNavVisRange = "{3045, 1256}";
|
||||
};
|
||||
};
|
||||
B6C786BB0F2A5C0800053681 /* profuse_dirent.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1250, 1806}}";
|
||||
sepNavSelRange = "{193, 0}";
|
||||
sepNavVisRange = "{0, 1150}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {796, 1792}}";
|
||||
sepNavSelRange = "{974, 0}";
|
||||
sepNavVisRange = "{1797, 951}";
|
||||
};
|
||||
};
|
||||
B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1250, 3010}}";
|
||||
sepNavSelRange = "{181, 0}";
|
||||
sepNavVisRange = "{0, 1136}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1250, 3038}}";
|
||||
sepNavSelRange = "{3676, 0}";
|
||||
sepNavVisRange = "{3020, 1612}";
|
||||
};
|
||||
};
|
||||
B6C786C30F2A5DCE00053681 /* profuse_file.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {883, 1974}}";
|
||||
sepNavSelRange = "{132, 0}";
|
||||
sepNavVisRange = "{0, 365}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {796, 1988}}";
|
||||
sepNavSelRange = "{502, 0}";
|
||||
sepNavVisRange = "{1178, 692}";
|
||||
};
|
||||
};
|
||||
B6C786C90F2A5E8000053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
comments = "error: #error On FreeBSD API version 25 or greater must be used";
|
||||
fRef = B6B17F820F103AA70060F7AA /* fuse_common.h */;
|
||||
rLen = 1;
|
||||
rLoc = 265;
|
||||
rType = 1;
|
||||
};
|
||||
B6C786CA0F2A5E8000053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6B17F820F103AA70060F7AA /* fuse_common.h */;
|
||||
name = "fuse_common.h: 266";
|
||||
rLen = 63;
|
||||
rLoc = 6850;
|
||||
rType = 0;
|
||||
vrLen = 1208;
|
||||
vrLoc = 6380;
|
||||
};
|
||||
B6C786DD0F2A5FED00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6B17F820F103AA70060F7AA /* fuse_common.h */;
|
||||
name = "fuse_common.h: 266";
|
||||
rLen = 63;
|
||||
rLoc = 6850;
|
||||
rType = 0;
|
||||
vrLen = 1208;
|
||||
vrLoc = 6380;
|
||||
};
|
||||
B6C786DE0F2A5FED00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */;
|
||||
name = "profuse_xattr.cpp: 120";
|
||||
rLen = 68;
|
||||
rLoc = 2396;
|
||||
rType = 0;
|
||||
vrLen = 546;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786DF0F2A5FED00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786BB0F2A5C0800053681 /* profuse_dirent.cpp */;
|
||||
name = "profuse_dirent.cpp: 12";
|
||||
rLen = 0;
|
||||
rLoc = 135;
|
||||
rType = 0;
|
||||
vrLen = 610;
|
||||
vrLoc = 38;
|
||||
};
|
||||
B6C786E00F2A5FED00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
comments = "error: 'EISDIR' was not declared in this scope";
|
||||
fRef = B6C786C30F2A5DCE00053681 /* profuse_file.cpp */;
|
||||
rLen = 1;
|
||||
rLoc = 24;
|
||||
rType = 1;
|
||||
};
|
||||
B6C786E10F2A5FED00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6B17F820F103AA70060F7AA /* fuse_common.h */;
|
||||
name = "fuse_common.h: 266";
|
||||
rLen = 63;
|
||||
rLoc = 6850;
|
||||
rType = 0;
|
||||
vrLen = 1208;
|
||||
vrLoc = 6380;
|
||||
};
|
||||
B6C786E20F2A5FED00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */;
|
||||
name = "profuse_xattr.cpp: 120";
|
||||
rLen = 68;
|
||||
rLoc = 2396;
|
||||
rType = 0;
|
||||
vrLen = 546;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786E30F2A5FED00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786BB0F2A5C0800053681 /* profuse_dirent.cpp */;
|
||||
name = "profuse_dirent.cpp: 12";
|
||||
rLen = 0;
|
||||
rLoc = 135;
|
||||
rType = 0;
|
||||
vrLen = 610;
|
||||
vrLoc = 38;
|
||||
};
|
||||
B6C786E40F2A5FED00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786C30F2A5DCE00053681 /* profuse_file.cpp */;
|
||||
name = "profuse_file.cpp: 11";
|
||||
rLen = 0;
|
||||
rLoc = 132;
|
||||
rType = 0;
|
||||
vrLen = 607;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786E50F2A5FF300053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B679E4A70F02E79300FB3F0C /* main.cpp */;
|
||||
@ -731,36 +631,6 @@
|
||||
vrLen = 330;
|
||||
vrLoc = 441;
|
||||
};
|
||||
B6C786E60F2A5FF300053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786B30F2A59AF00053681 /* profuse.h */;
|
||||
name = "profuse.h: 15";
|
||||
rLen = 0;
|
||||
rLoc = 592;
|
||||
rType = 0;
|
||||
vrLen = 176;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786E70F2A5FF300053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */;
|
||||
name = "profuse_xattr.cpp: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 360;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786E80F2A5FF300053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B679E4A70F02E79300FB3F0C /* main.cpp */;
|
||||
name = "main.cpp: 33";
|
||||
rLen = 0;
|
||||
rLoc = 323;
|
||||
rType = 0;
|
||||
vrLen = 330;
|
||||
vrLoc = 441;
|
||||
};
|
||||
B6C786E90F2A5FF300053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786B30F2A59AF00053681 /* profuse.h */;
|
||||
@ -781,16 +651,6 @@
|
||||
vrLen = 360;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786EB0F2A5FF300053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6B17F820F103AA70060F7AA /* fuse_common.h */;
|
||||
name = "fuse_common.h: 266";
|
||||
rLen = 63;
|
||||
rLoc = 6850;
|
||||
rType = 0;
|
||||
vrLen = 789;
|
||||
vrLoc = 6545;
|
||||
};
|
||||
B6C786EE0F2A612600053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6B17F820F103AA70060F7AA /* fuse_common.h */;
|
||||
@ -811,26 +671,6 @@
|
||||
vrLen = 463;
|
||||
vrLoc = 500;
|
||||
};
|
||||
B6C786F00F2A612600053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786C30F2A5DCE00053681 /* profuse_file.cpp */;
|
||||
name = "profuse_file.cpp: 11";
|
||||
rLen = 0;
|
||||
rLoc = 132;
|
||||
rType = 0;
|
||||
vrLen = 365;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786F10F2A612600053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6B17F820F103AA70060F7AA /* fuse_common.h */;
|
||||
name = "fuse_common.h: 266";
|
||||
rLen = 63;
|
||||
rLoc = 6850;
|
||||
rType = 0;
|
||||
vrLen = 708;
|
||||
vrLoc = 5837;
|
||||
};
|
||||
B6C786F20F2A612600053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */;
|
||||
@ -851,7 +691,7 @@
|
||||
vrLen = 365;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786F40F2A612600053681 /* PBXTextBookmark */ = {
|
||||
B6C786F70F2A64CC00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6B17FA10F1138830060F7AA /* DiskCopy42.cpp */;
|
||||
name = "DiskCopy42.cpp: 11";
|
||||
@ -861,6 +701,46 @@
|
||||
vrLen = 333;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786F80F2A64CC00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */;
|
||||
name = "profuse_xattr.cpp: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 371;
|
||||
vrLoc = 3;
|
||||
};
|
||||
B6C786F90F2A64CC00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */;
|
||||
name = "profuse_stat.cpp: 15";
|
||||
rLen = 0;
|
||||
rLoc = 181;
|
||||
rType = 0;
|
||||
vrLen = 303;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786FA0F2A64CC00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786C30F2A5DCE00053681 /* profuse_file.cpp */;
|
||||
name = "profuse_file.cpp: 11";
|
||||
rLen = 0;
|
||||
rLoc = 132;
|
||||
rType = 0;
|
||||
vrLen = 365;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6C786FD0F2A64CC00053681 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */;
|
||||
name = "profuse_stat.cpp: 15";
|
||||
rLen = 0;
|
||||
rLoc = 181;
|
||||
rType = 0;
|
||||
vrLen = 303;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6D81E5B0EFDE859000219B7 /* xmain.cpp:163 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
@ -886,4 +766,44 @@
|
||||
sepNavWindowFrame = "{{15, 249}, {1412, 924}}";
|
||||
};
|
||||
};
|
||||
B6E345420F2BB60B00B7FC78 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B60E91530EFB51FE000E4348 /* Disk.h */;
|
||||
name = "Disk.h: 65";
|
||||
rLen = 21;
|
||||
rLoc = 1281;
|
||||
rType = 0;
|
||||
vrLen = 597;
|
||||
vrLoc = 627;
|
||||
};
|
||||
B6E345610F2BC07F00B7FC78 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786B30F2A59AF00053681 /* profuse.h */;
|
||||
name = "profuse.h: 48";
|
||||
rLen = 0;
|
||||
rLoc = 1372;
|
||||
rType = 0;
|
||||
vrLen = 973;
|
||||
vrLoc = 409;
|
||||
};
|
||||
B6F4740F0F2ACB4700CB75DA /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786BB0F2A5C0800053681 /* profuse_dirent.cpp */;
|
||||
name = "profuse_dirent.cpp: 16";
|
||||
rLen = 0;
|
||||
rLoc = 193;
|
||||
rType = 0;
|
||||
vrLen = 368;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6F474110F2ACB4700CB75DA /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6C786BB0F2A5C0800053681 /* profuse_dirent.cpp */;
|
||||
name = "profuse_dirent.cpp: 16";
|
||||
rLen = 0;
|
||||
rLoc = 193;
|
||||
rType = 0;
|
||||
vrLen = 368;
|
||||
vrLoc = 0;
|
||||
};
|
||||
}
|
||||
|
@ -41,7 +41,8 @@ void prodos_opendir(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
|
||||
|
||||
if (ino == 1)
|
||||
{
|
||||
VolumeEntry v(buffer + 0x04);
|
||||
VolumeEntry v;
|
||||
v.Load(buffer + 0x04);
|
||||
|
||||
ok = disk->ReadVolume(&v, &files);
|
||||
|
||||
@ -50,7 +51,8 @@ void prodos_opendir(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
|
||||
else
|
||||
{
|
||||
|
||||
FileEntry e(buffer + (ino & 0x1ff));
|
||||
FileEntry e;
|
||||
e.Load(buffer + (ino & 0x1ff));
|
||||
|
||||
ERROR(e.storage_type != DIRECTORY_FILE, ENOTDIR)
|
||||
|
||||
|
@ -27,7 +27,8 @@ void prodos_open(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
|
||||
ok = disk->Read(ino >> 9, buffer);
|
||||
ERROR(ok < 0, EIO)
|
||||
|
||||
e = new FileEntry(buffer + (ino & 0x1ff));
|
||||
e = new FileEntry();
|
||||
e->Load(buffer + (ino & 0x1ff));
|
||||
|
||||
if (e->storage_type == EXTENDED_FILE)
|
||||
{
|
||||
|
@ -51,7 +51,8 @@ int prodos_stat(FileEntry& e, struct stat *st)
|
||||
ok = disk->Read(e.key_pointer, buffer);
|
||||
if (ok < 0) return -1;
|
||||
|
||||
SubdirEntry se(buffer + 0x04);
|
||||
SubdirEntry se;
|
||||
se.Load(buffer + 0x04);
|
||||
|
||||
if (se.storage_type != SUBDIR_HEADER) return -1;
|
||||
|
||||
@ -123,7 +124,8 @@ void prodos_getattr(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
|
||||
// ino 1 is the volume header.
|
||||
if (ino == 1)
|
||||
{
|
||||
VolumeEntry v(buffer + 0x04);
|
||||
VolumeEntry v;
|
||||
v.Load(buffer + 0x04);
|
||||
ok = prodos_stat(v, &st);
|
||||
ERROR(ok < 0, EIO);
|
||||
|
||||
@ -136,7 +138,8 @@ void prodos_getattr(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
|
||||
{
|
||||
|
||||
|
||||
FileEntry e(buffer + (ino & 0x1ff));
|
||||
FileEntry e;
|
||||
e.Load(buffer + (ino & 0x1ff));
|
||||
ok = prodos_stat(e, &st);
|
||||
|
||||
ERROR(ok < 0, EIO);
|
||||
@ -180,7 +183,8 @@ void prodos_lookup(fuse_req_t req, fuse_ino_t parent, const char *name)
|
||||
}
|
||||
else
|
||||
{
|
||||
FileEntry e(buffer + (parent & 0x1ff));
|
||||
FileEntry e;
|
||||
e.Load(buffer + (parent & 0x1ff));
|
||||
ERROR(e.storage_type != DIRECTORY_FILE, ENOENT);
|
||||
|
||||
ok = disk->ReadDirectory(e.key_pointer, NULL, &files);
|
||||
|
@ -180,6 +180,7 @@ static void xattr_finfo(FileEntry& e, fuse_req_t req, size_t size, off_t off)
|
||||
static bool isTextFile(unsigned ftype, unsigned auxtype)
|
||||
{
|
||||
if (ftype == 0x04) return true; // ascii text
|
||||
if (ftype == 0x80) return true; // source code.
|
||||
if (ftype == 0x50 && auxtype == 0x5445) return true; // teach text
|
||||
|
||||
return false;
|
||||
@ -214,7 +215,8 @@ return; \
|
||||
ERROR(ok < 0, EIO)
|
||||
|
||||
|
||||
FileEntry e(buffer + (ino & 0x1ff));
|
||||
FileEntry e;
|
||||
e.Load(buffer + (ino & 0x1ff));
|
||||
|
||||
|
||||
attr += "prodos.FileType";
|
||||
@ -306,7 +308,8 @@ void prodos_getxattr(fuse_req_t req, fuse_ino_t ino, const char *name, size_t si
|
||||
ERROR(ok < 0, EIO)
|
||||
|
||||
|
||||
FileEntry e(buffer + (ino & 0x1ff));
|
||||
FileEntry e;
|
||||
e.Load(buffer + (ino & 0x1ff));
|
||||
|
||||
switch(e.storage_type)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user