diff --git a/Disk.cpp b/Disk.cpp index 4f9fa45..a22f5c8 100644 --- a/Disk.cpp +++ b/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 *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 *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 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 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); diff --git a/Disk.h b/Disk.h index dbda672..5f2f622 100644 --- a/Disk.h +++ b/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 diff --git a/File.cpp b/File.cpp index 58a326c..37e6943 100644 --- a/File.cpp +++ b/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; } diff --git a/File.h b/File.h index c69d22e..1492e99 100644 --- a/File.h +++ b/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; diff --git a/profuse.xcodeproj/kelvin.mode1v3 b/profuse.xcodeproj/kelvin.mode1v3 index ccbbfdf..39046fb 100644 --- a/profuse.xcodeproj/kelvin.mode1v3 +++ b/profuse.xcodeproj/kelvin.mode1v3 @@ -282,7 +282,8 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 17 + 7 + 1 0 @@ -308,7 +309,7 @@ 224 RubberWindowFrame - 189 537 1212 568 0 0 1920 1178 + 75 119 1212 568 0 0 1920 1178 Module PBXSmartGroupTreeModule @@ -324,7 +325,7 @@ PBXProjectModuleGUID 1CE0B20306471E060097A5F4 PBXProjectModuleLabel - DiskCopy42.cpp + File.h PBXSplitModuleInNavigatorKey Split0 @@ -332,27 +333,29 @@ PBXProjectModuleGUID 1CE0B20406471E060097A5F4 PBXProjectModuleLabel - DiskCopy42.cpp + File.h _historyCapacity 0 bookmark - B6C786F40F2A612600053681 + B64E30810F2C0D2F000543FE history - B6614B050EFF5F280073C4E7 - B679E4B60F02EFA200FB3F0C B6B767C80F0FFA3900D819C9 - B642F1530F133632001F7696 B642F1540F133632001F7696 B642F16A0F1341D4001F7696 - B61B78A20F16EA8700C3E140 B6C786E50F2A5FF300053681 - B6C786E60F2A5FF300053681 - B6C786E70F2A5FF300053681 B6C786EE0F2A612600053681 B6C786EF0F2A612600053681 - B6C786F00F2A612600053681 - B6B7A85F0F140BBB001024D2 + B6C786F70F2A64CC00053681 + B6C786F80F2A64CC00053681 + B6C786F90F2A64CC00053681 + B6C786FA0F2A64CC00053681 + B6F4740F0F2ACB4700CB75DA + B6E345420F2BB60B00B7FC78 + B6E345610F2BC07F00B7FC78 + B64E307D0F2C0D2F000543FE + B64E307E0F2C0D2F000543FE + B6614B050EFF5F280073C4E7 prevStack @@ -366,12 +369,14 @@ B6B17F950F1136550060F7AA B6B17FA80F1140160060F7AA B6B7A8600F140BBB001024D2 - B6C786E80F2A5FF300053681 B6C786E90F2A5FF300053681 B6C786EA0F2A5FF300053681 - B6C786F10F2A612600053681 B6C786F20F2A612600053681 B6C786F30F2A612600053681 + B6C786FD0F2A64CC00053681 + B6F474110F2ACB4700CB75DA + B64E307F0F2C0D2F000543FE + B64E30800F2C0D2F000543FE SplitCount @@ -385,7 +390,7 @@ Frame {{0, 0}, {944, 349}} RubberWindowFrame - 189 537 1212 568 0 0 1920 1178 + 75 119 1212 568 0 0 1920 1178 Module PBXNavigatorGroup @@ -405,7 +410,7 @@ Frame {{0, 354}, {944, 173}} RubberWindowFrame - 189 537 1212 568 0 0 1920 1178 + 75 119 1212 568 0 0 1920 1178 Module XCDetailModule @@ -429,9 +434,9 @@ TableOfContents - B6C786AB0F2A598F00053681 + B64E30820F2C0D2F000543FE 1CE0B1FE06471DED0097A5F4 - B6C786AC0F2A598F00053681 + B64E30830F2C0D2F000543FE 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 @@ -565,12 +570,11 @@ 5 WindowOrderList - B60E918C0EFD7E1E000E4348 - 1CD10A99069EF8BA00B06720 /Users/kelvin/Projects/profuse/profuse.xcodeproj + B64E30840F2C0D2F000543FE WindowString - 189 537 1212 568 0 0 1920 1178 + 75 119 1212 568 0 0 1920 1178 WindowToolsV3 @@ -593,7 +597,7 @@ PBXProjectModuleGUID 1CD0528F0623707200166675 PBXProjectModuleLabel - profuse_xattr.cpp + profuse_file.cpp StatusBarVisibility @@ -602,7 +606,7 @@ Frame {{0, 0}, {857, 500}} RubberWindowFrame - 352 195 857 922 0 0 1920 1178 + 621 136 857 922 0 0 1920 1178 Module PBXNavigatorGroup @@ -628,7 +632,7 @@ Frame {{0, 505}, {857, 376}} RubberWindowFrame - 352 195 857 922 0 0 1920 1178 + 621 136 857 922 0 0 1920 1178 Module PBXBuildResultsModule @@ -651,14 +655,14 @@ TableOfContents B60E918C0EFD7E1E000E4348 - B6C786CB0F2A5E8000053681 + B64E30630F2C08EF000543FE 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID ToolbarConfiguration xcode.toolbar.config.buildV3 WindowString - 352 195 857 922 0 0 1920 1178 + 621 136 857 922 0 0 1920 1178 WindowToolGUID B60E918C0EFD7E1E000E4348 WindowToolIsVisible @@ -771,13 +775,13 @@ TableOfContents 1CD10A99069EF8BA00B06720 - B6C786AD0F2A598F00053681 + B64E30640F2C08EF000543FE 1C162984064C10D400B95A72 - B6C786AE0F2A598F00053681 - B6C786AF0F2A598F00053681 - B6C786B00F2A598F00053681 - B6C786B10F2A598F00053681 - B6C786B20F2A598F00053681 + B64E30650F2C08EF000543FE + B64E30660F2C08EF000543FE + B64E30670F2C08EF000543FE + B64E30680F2C08EF000543FE + B64E30690F2C08EF000543FE ToolbarConfiguration xcode.toolbar.config.debugV3 @@ -1003,7 +1007,7 @@ PBXProjectModuleGUID 1C78EAB2065D492600B07095 PBXProjectModuleLabel - main.cpp + File.cpp StatusBarVisibility @@ -1080,7 +1084,7 @@ TableOfContents B60E929F0EFDA500000E4348 - B61B78A60F16EA8700C3E140 + B6E345600F2BC07D00B7FC78 1C78EAB2065D492600B07095 1CD052920623707200166675 @@ -1091,7 +1095,7 @@ WindowToolGUID B60E929F0EFDA500000E4348 WindowToolIsVisible - + Identifier diff --git a/profuse.xcodeproj/kelvin.pbxuser b/profuse.xcodeproj/kelvin.pbxuser index 3a8f97e..6697b70 100644 --- a/profuse.xcodeproj/kelvin.pbxuser +++ b/profuse.xcodeproj/kelvin.pbxuser @@ -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 = ""; - 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; + }; } diff --git a/profuse_dirent.cpp b/profuse_dirent.cpp index 5571ab3..1536685 100644 --- a/profuse_dirent.cpp +++ b/profuse_dirent.cpp @@ -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) diff --git a/profuse_file.cpp b/profuse_file.cpp index 73d22d5..2135cf9 100644 --- a/profuse_file.cpp +++ b/profuse_file.cpp @@ -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) { diff --git a/profuse_stat.cpp b/profuse_stat.cpp index 1e8a6f3..496b6eb 100644 --- a/profuse_stat.cpp +++ b/profuse_stat.cpp @@ -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); diff --git a/profuse_xattr.cpp b/profuse_xattr.cpp index ce79d6a..6603feb 100644 --- a/profuse_xattr.cpp +++ b/profuse_xattr.cpp @@ -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) {