From 68a7851f33fa03bd9aca70123c01910b5bf21b47 Mon Sep 17 00:00:00 2001 From: ksherlock Date: Mon, 28 Feb 2011 04:28:40 +0000 Subject: [PATCH] git-svn-id: https://profuse.googlecode.com/svn/branches/profuse_interim@366 aa027e90-d47c-11dd-86d7-074df07e0730 --- Device/DiskCopy42Image.cpp | 6 +- DiskCopy42.cpp | 63 ----- DiskCopy42.h | 31 --- UniversalDiskImage.cpp | 51 ---- UniversalDiskImage.h | 40 --- main.cpp | 2 + profuse.h | 3 + profuse.xcodeproj/kelvin.pbxuser | 432 +++++++----------------------- profuse.xcodeproj/project.pbxproj | 249 +++++++++++++---- profuse_stat.cpp | 33 +++ 10 files changed, 338 insertions(+), 572 deletions(-) delete mode 100644 DiskCopy42.cpp delete mode 100644 DiskCopy42.h delete mode 100644 UniversalDiskImage.cpp delete mode 100644 UniversalDiskImage.h diff --git a/Device/DiskCopy42Image.cpp b/Device/DiskCopy42Image.cpp index 3d121f3..816280e 100644 --- a/Device/DiskCopy42Image.cpp +++ b/Device/DiskCopy42Image.cpp @@ -32,8 +32,8 @@ DiskCopy42Image::DiskCopy42Image(MappedFile *f) : DiskImage(f), _changed(false) { - setAdaptor(new POAdaptor(oUserData + (uint8_t *)f->address())); - setBlocks(Read32(f->address(), oDataSize) / 512); + setAdaptor(new POAdaptor(oUserData + (uint8_t *)address())); + setBlocks(Read32(address(), oDataSize) / 512); } @@ -183,7 +183,7 @@ void DiskCopy42Image::Validate(MappedFile *file) // name must be < 64 if (Read8(data, 0) > 63) break; - if (Read32(data, oPrivate) != 0x100) + if (Read16(data, oPrivate) != 0x100) break; // bytes, not blocks. diff --git a/DiskCopy42.cpp b/DiskCopy42.cpp deleted file mode 100644 index 5a94736..0000000 --- a/DiskCopy42.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - * DiskCopy42.cpp - * profuse - * - * Created by Kelvin Sherlock on 1/4/09. - * - */ - -#include "DiskCopy42.h" -#include "common.h" -#include - - -uint32_t DiskCopy42::CheckSum(uint8_t *buffer, unsigned length) -{ - uint32_t checksum = 0; - if (length & 0x01) return -1; - - /* - * checksum starts at 0 - * foreach big-endian 16-bit word w: - * checksum += w - * checksum = checksum rotate right 1 (bit 0 --> bit 31) - */ - - for(unsigned i = 0; i < length; i += 2) - { - checksum += (buffer[i] << 8); - checksum += buffer[i + 1]; - checksum = (checksum >> 1) | (checksum << 31); - //if (checksum & 0x01) checksum = (checksum >> 1) | 0x80000000; - //else checksum >>= 1; - } - return checksum; - -} - -bool DiskCopy42::Load(const uint8_t *buffer) -{ - unsigned i; - - i = buffer[0]; - if (i >= 64) return false; - - memcpy(disk_name, &buffer[1], i); - disk_name[i] = 0; - - - data_size = load32_be(&buffer[64]); - tag_size = load32_be(&buffer[68]); - - data_checksum = load32_be(&buffer[72]); - tag_checksum = load32_be(&buffer[76]); - - disk_format = buffer[80]; - format_byte = buffer[81]; - private_word = load16_be(&buffer[82]); - - if (private_word != 0x100) return false; - - return true; -} - diff --git a/DiskCopy42.h b/DiskCopy42.h deleted file mode 100644 index 21fa8ea..0000000 --- a/DiskCopy42.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * DiskCopy42.h - * profuse - * - * Created by Kelvin Sherlock on 1/4/09. - * - */ - -#ifndef __DISKCOPY42__ -#define __DISKCOPY42__ - - -#include - -struct DiskCopy42 -{ - bool Load(const uint8_t *buffer); - static uint32_t CheckSum(uint8_t *buffer, unsigned length); - - char disk_name[64]; - uint32_t data_size; - uint32_t tag_size; - uint32_t data_checksum; - uint32_t tag_checksum; - unsigned disk_format; - unsigned format_byte; - unsigned private_word; -}; - -#endif - diff --git a/UniversalDiskImage.cpp b/UniversalDiskImage.cpp deleted file mode 100644 index e344cbb..0000000 --- a/UniversalDiskImage.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * UniversalDiskImage.cpp - * profuse - * - * Created by Kelvin Sherlock on 1/6/09. - * - */ - -#include "UniversalDiskImage.h" - -#include "common.h" -#include - -bool UniversalDiskImage::Load(const uint8_t *buffer) -{ - if (strncmp((const char *)buffer, "2IMG", 4) != 0) return false; - - // all numbers little-endian. - - magic_word = load32(&buffer[0]); - - creator = load32(&buffer[0x04]); - - header_size = load16(&buffer[0x08]); - - version = load16(&buffer[0x0a]); - - image_format = load32(&buffer[0x0c]); - - flags = load32(&buffer[0x10]); - - data_blocks = load32(&buffer[0x14]); - - data_offset = load32(&buffer[0x18]); - data_size = load32(&buffer[0x1c]); - - - comment_offset = load32(&buffer[0x20]); - comment_size = load32(&buffer[0x24]); - - - - creator_data_offset = load32(&buffer[0x28]); - creator_data_size = load32(&buffer[0x2c]); - - // 16 bytes reserved. - - - return true; -} - diff --git a/UniversalDiskImage.h b/UniversalDiskImage.h deleted file mode 100644 index 5fee6d2..0000000 --- a/UniversalDiskImage.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * UniversalDiskImage.h - * profuse - * - * Created by Kelvin Sherlock on 1/6/09. - * - */ - -#ifndef __UNIVERSAL_DISK_IMAGE_H__ -#define __UNIVERSAL_DISK_IMAGE_H__ - -#include - - -#define UDI_FORMAT_DOS_ORDER 0 -#define UDI_FORMAT_PRODOS_ORDER 1 -#define UDI_FORMAT_NIBBLIZED 2 - -struct UniversalDiskImage -{ - bool Load(const uint8_t * buffer); - - uint32_t magic_word; - uint32_t creator; - unsigned header_size; - unsigned version; - unsigned image_format; - uint32_t flags; - unsigned data_blocks; - unsigned data_offset; - unsigned data_size; - unsigned comment_offset; - unsigned comment_size; - unsigned creator_data_offset; - unsigned creator_data_size; -}; - - -#endif - diff --git a/main.cpp b/main.cpp index 265d499..4e69365 100644 --- a/main.cpp +++ b/main.cpp @@ -238,6 +238,8 @@ int main(int argc, char *argv[]) prodos_oper.release = prodos_release; prodos_oper.read = prodos_read; + prodos_oper.statfs = prodos_statfs; + // scan the argument list, looking for the name of the disk image. if (fuse_opt_parse(&args, &options , prodos_opts, prodos_opt_proc) == -1) diff --git a/profuse.h b/profuse.h index 4cf8c54..605fbbc 100644 --- a/profuse.h +++ b/profuse.h @@ -40,6 +40,9 @@ void prodos_readdir(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, stru void prodos_getattr(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi); void prodos_lookup(fuse_req_t req, fuse_ino_t parent, const char *name); +void prodos_statfs(fuse_req_t req, fuse_ino_t ino); + + // file io. void prodos_open(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi); void prodos_release(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi); diff --git a/profuse.xcodeproj/kelvin.pbxuser b/profuse.xcodeproj/kelvin.pbxuser index 6e32f4e..d5e80c4 100644 --- a/profuse.xcodeproj/kelvin.pbxuser +++ b/profuse.xcodeproj/kelvin.pbxuser @@ -2,7 +2,7 @@ { 08FB7793FE84155DC02AAC07 /* Project object */ = { activeArchitecturePreference = i386; - activeBuildConfigurationName = "Debug 10.6"; + activeBuildConfigurationName = "Debug Universal"; activeExecutable = B60E914A0EFB3612000E4348 /* profuse */; activeSDKPreference = macosx10.6; activeTarget = 8DD76F620486A84900D96B5E /* profuse */; @@ -11,7 +11,6 @@ ); breakpoints = ( B60E91C10EFD8049000E4348 /* xmain.cpp:129 */, - B60E92720EFDA086000E4348 /* File.cpp:74 */, B6D81E5B0EFDE859000219B7 /* xmain.cpp:163 */, B6AE1CFF0F0335FC00D36ADB /* main.cpp:20 */, ); @@ -40,7 +39,7 @@ PBXFileTableDataSourceColumnWidthsKey = ( 22, 300, - 742, + 583, ); PBXFileTableDataSourceColumnsKey = ( PBXExecutablesDataSource_ActiveFlagID, @@ -53,7 +52,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 854, + 695, 20, 48, 43, @@ -99,7 +98,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 665, + 655, 60, 20, 48, @@ -116,33 +115,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 274161393; - PBXWorkspaceStateSaveDate = 274161393; + PBXPerProjectTemplateStateSaveDate = 320554128; + PBXWorkspaceStateSaveDate = 320554128; }; perUserProjectItems = { - B6108A660FDA0E0700D2D63B = B6108A660FDA0E0700D2D63B /* PBXTextBookmark */; - B642F1540F133632001F7696 = B642F1540F133632001F7696 /* PBXTextBookmark */; - B642F16A0F1341D4001F7696 = B642F16A0F1341D4001F7696 /* PBXTextBookmark */; - B64E307E0F2C0D2F000543FE = B64E307E0F2C0D2F000543FE /* PBXTextBookmark */; - B64E309A0F2CD8F2000543FE = B64E309A0F2CD8F2000543FE /* PBXTextBookmark */; - B6706BEC10575D48004C8120 = B6706BEC10575D48004C8120 /* PBXTextBookmark */; - B67F097510575F0E00A13214 /* PBXTextBookmark */ = B67F097510575F0E00A13214 /* PBXTextBookmark */; - B67F09AC1057622100A13214 /* PBXTextBookmark */ = B67F09AC1057622100A13214 /* PBXTextBookmark */; - B67F09AD1057622100A13214 /* PBXTextBookmark */ = B67F09AD1057622100A13214 /* PBXTextBookmark */; - B67F09AE1057622100A13214 /* PBXTextBookmark */ = B67F09AE1057622100A13214 /* PBXTextBookmark */; - B67F09AF1057622100A13214 /* XCBuildMessageTextBookmark */ = B67F09AF1057622100A13214 /* XCBuildMessageTextBookmark */; - B67F09B01057622100A13214 /* PBXTextBookmark */ = B67F09B01057622100A13214 /* PBXTextBookmark */; - B6B767C80F0FFA3900D819C9 = B6B767C80F0FFA3900D819C9 /* PBXTextBookmark */; - B6C786E50F2A5FF300053681 = B6C786E50F2A5FF300053681 /* PBXTextBookmark */; - B6C786EE0F2A612600053681 = B6C786EE0F2A612600053681 /* PBXTextBookmark */; - B6C786EF0F2A612600053681 = B6C786EF0F2A612600053681 /* PBXTextBookmark */; - B6C786F70F2A64CC00053681 = B6C786F70F2A64CC00053681 /* PBXTextBookmark */; - B6C786F90F2A64CC00053681 = B6C786F90F2A64CC00053681 /* PBXTextBookmark */; - B6C786FA0F2A64CC00053681 = B6C786FA0F2A64CC00053681 /* PBXTextBookmark */; - B6DA6C190FA6AFE90027FC1D = B6DA6C190FA6AFE90027FC1D /* PBXTextBookmark */; - B6E345420F2BB60B00B7FC78 = B6E345420F2BB60B00B7FC78 /* PBXTextBookmark */; - B6E345610F2BC07F00B7FC78 = B6E345610F2BC07F00B7FC78 /* PBXTextBookmark */; - B6F4740F0F2ACB4700CB75DA = B6F4740F0F2ACB4700CB75DA /* PBXTextBookmark */; + B6A53BB3131A17AF00C9070F = B6A53BB3131A17AF00C9070F /* PBXTextBookmark */; + B6A53BE3131B434600C9070F = B6A53BE3131B434600C9070F /* PBXTextBookmark */; + B6A53BE4131B434600C9070F = B6A53BE4131B434600C9070F /* PBXTextBookmark */; + B6A53BE5131B434600C9070F = B6A53BE5131B434600C9070F /* PBXTextBookmark */; + B6A53BF7131B446F00C9070F = B6A53BF7131B446F00C9070F /* PBXTextBookmark */; + B6A53C0C131B44BD00C9070F /* PBXTextBookmark */ = B6A53C0C131B44BD00C9070F /* PBXTextBookmark */; + B6A53C1B131B477700C9070F /* PBXTextBookmark */ = B6A53C1B131B477700C9070F /* PBXTextBookmark */; + B6A53C3B131B4DBD00C9070F /* PBXTextBookmark */ = B6A53C3B131B4DBD00C9070F /* PBXTextBookmark */; }; sourceControlManager = B60E91500EFB3628000E4348 /* Source Control */; userBuildSettings = { @@ -197,22 +181,6 @@ "xcase-unsigned int-FileEntry::FileEntry" = 3; }; }; - B60E914D0EFB3627000E4348 /* File.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {996, 1974}}"; - sepNavSelRange = "{273, 23}"; - sepNavVisRange = "{0, 1003}"; - sepNavWindowFrame = "{{95, -86}, {555, 1173}}"; - }; - }; - B60E914E0EFB3628000E4348 /* File.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1032, 2977}}"; - sepNavSelRange = "{3323, 0}"; - sepNavVisRange = "{1039, 1166}"; - sepNavWindowFrame = "{{667, -9}, {555, 1173}}"; - }; - }; B60E91500EFB3628000E4348 /* Source Control */ = { isa = PBXSourceControlManager; fallbackIsa = XCSourceControlManager; @@ -230,9 +198,9 @@ }; B60E91530EFB51FE000E4348 /* Disk.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1250, 1092}}"; - sepNavSelRange = "{1300, 0}"; - sepNavVisRange = "{178, 1128}"; + sepNavIntBoundsRect = "{{0, 0}, {1245, 1092}}"; + sepNavSelRange = "{1156, 11}"; + sepNavVisRange = "{76, 1374}"; sepNavWindowFrame = "{{77, 7}, {692, 1171}}"; }; }; @@ -270,180 +238,107 @@ originalNumberOfMultipleMatches = 0; state = 2; }; - B60E92720EFDA086000E4348 /* File.cpp:74 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = B60E914E0EFB3628000E4348 /* File.cpp */; - functionName = "FileEntry::FileEntry(const void *data)"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 74; - location = "ProDOS-Fuse"; - modificationTime = 251949619.113693; - originalNumberOfMultipleMatches = 0; - state = 2; - }; - B6108A660FDA0E0700D2D63B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */; - name = "profuse_xattr.cpp: 178"; - rLen = 0; - rLoc = 4165; - rType = 0; - vrLen = 1035; - vrLoc = 3525; - }; - B642F1290F132FA3001F7696 /* UniversalDiskImage.h */ = { + B650C2C3131090D200046FAD /* File.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1250, 831}}"; - sepNavSelRange = "{217, 34}"; - sepNavVisRange = "{0, 708}"; - sepNavWindowFrame = "{{15, 249}, {1412, 924}}"; + sepNavIntBoundsRect = "{{0, 0}, {1245, 2990}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1306, 1844}"; }; }; - B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */ = { + B650C2C4131090D200046FAD /* File.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1250, 831}}"; - sepNavSelRange = "{820, 0}"; - sepNavVisRange = "{0, 966}"; - sepNavWindowFrame = "{{668, 219}, {1412, 924}}"; + sepNavIntBoundsRect = "{{0, 0}, {1245, 1742}}"; + sepNavSelRange = "{1591, 0}"; + sepNavVisRange = "{864, 1333}"; }; }; - B642F1540F133632001F7696 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B6B17FA00F1138830060F7AA /* DiskCopy42.h */; - name = "DiskCopy42.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 355; - vrLoc = 0; - }; - B642F16A0F1341D4001F7696 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B60E91580EFD77E3000E4348 /* common.h */; - name = "common.h: 40"; - rLen = 0; - rLoc = 627; - rType = 0; - vrLen = 313; - vrLoc = 0; - }; - B64E307E0F2C0D2F000543FE /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B60E914E0EFB3628000E4348 /* File.cpp */; - name = "File.cpp: 156"; - rLen = 0; - rLoc = 3323; - rType = 0; - vrLen = 523; - vrLoc = 1285; - }; - B64E309A0F2CD8F2000543FE /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B60E914D0EFB3627000E4348 /* File.h */; - name = "File.h: 30"; - rLen = 0; - rLoc = 414; - rType = 0; - vrLen = 440; - vrLoc = 1197; - }; - B6706BEC10575D48004C8120 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */; - name = "profuse_xattr.cpp: 178"; - rLen = 0; - rLoc = 4165; - rType = 0; - vrLen = 1154; - vrLoc = 3442; - }; B679E4A70F02E79300FB3F0C /* main.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {759, 3948}}"; - sepNavSelRange = "{1950, 0}"; - sepNavVisRange = "{3049, 226}"; + sepNavIntBoundsRect = "{{0, 0}, {1245, 4706}}"; + sepNavSelRange = "{8060, 0}"; + sepNavVisRange = "{6516, 1846}"; sepNavWindowFrame = "{{342, 156}, {1412, 924}}"; }; }; - B67F097510575F0E00A13214 /* PBXTextBookmark */ = { + B6A53BB3131A17AF00C9070F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B679E4A70F02E79300FB3F0C /* main.cpp */; + name = "main.cpp: 253"; + rLen = 11; + rLoc = 4534; + rType = 0; + vrLen = 241; + vrLoc = 4525; + }; + B6A53BE3131B434600C9070F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B60E91530EFB51FE000E4348 /* Disk.h */; + name = "Disk.h: 70"; + rLen = 0; + rLoc = 1300; + rType = 0; + vrLen = 269; + vrLoc = 1042; + }; + B6A53BE4131B434600C9070F /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */; - name = "profuse_xattr.cpp: 178"; - rLen = 0; - rLoc = 4165; + name = "profuse_xattr.cpp: 56"; + rLen = 5; + rLoc = 1034; rType = 0; - vrLen = 1073; - vrLoc = 3523; + vrLen = 1279; + vrLoc = 998; }; - B67F097810575F8300A13214 /* DateTime.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1032, 1924}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 1083}"; - }; - }; - B67F097A10575FD900A13214 /* DateTime.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1032, 1170}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 947}"; - }; - }; - B67F09AC1057622100A13214 /* PBXTextBookmark */ = { + B6A53BE5131B434600C9070F /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = B67F097A10575FD900A13214 /* DateTime.h */; - name = "DateTime.h: 1"; + fRef = B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */; + name = "profuse_stat.cpp: 165"; rLen = 0; - rLoc = 0; + rLoc = 3263; rType = 0; - vrLen = 947; - vrLoc = 0; + vrLen = 1003; + vrLoc = 2629; }; - B67F09AD1057622100A13214 /* PBXTextBookmark */ = { + B6A53BF7131B446F00C9070F /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = B67F097810575F8300A13214 /* DateTime.cpp */; - name = "DateTime.cpp: 1"; + fRef = B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */; + name = "profuse_stat.cpp: 167"; rLen = 0; - rLoc = 0; + rLoc = 3263; rType = 0; - vrLen = 1083; - vrLoc = 0; + vrLen = 1021; + vrLoc = 2685; }; - B67F09AE1057622100A13214 /* PBXTextBookmark */ = { + B6A53C0C131B44BD00C9070F /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = B60E914E0EFB3628000E4348 /* File.cpp */; - name = "File.cpp: 151"; + fRef = B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */; + name = "profuse_stat.cpp: 167"; rLen = 0; - rLoc = 3323; + rLoc = 3263; rType = 0; - vrLen = 1166; - vrLoc = 1039; + vrLen = 1000; + vrLoc = 2706; }; - B67F09AF1057622100A13214 /* XCBuildMessageTextBookmark */ = { + B6A53C1B131B477700C9070F /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "Format '%u' expects type 'unsigned int', but argument 3 has type 'fuse_ino_t'"; - fRef = B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 377; - rType = 1; - }; - B67F09B01057622100A13214 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */; - name = "profuse_xattr.cpp: 378"; + fRef = B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */; + name = "profuse_stat.cpp: 167"; rLen = 0; - rLoc = 8340; + rLoc = 3263; rType = 0; - vrLen = 948; - vrLoc = 7739; + vrLen = 1000; + vrLoc = 2706; + }; + B6A53C3B131B4DBD00C9070F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */; + name = "profuse_stat.cpp: 167"; + rLen = 0; + rLoc = 3263; + rType = 0; + vrLen = 1000; + vrLoc = 2706; }; B6AE1CFF0F0335FC00D36ADB /* main.cpp:20 */ = { isa = PBXFileBreakpoint; @@ -463,51 +358,18 @@ originalNumberOfMultipleMatches = 0; state = 2; }; - B6B17F820F103AA70060F7AA /* fuse_common.h */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fuse_common.h; - path = /usr/local/include/fuse/fuse_common.h; - sourceTree = ""; - }; - B6B17FA00F1138830060F7AA /* DiskCopy42.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1353, 796}}"; - sepNavSelRange = "{226, 0}"; - sepNavVisRange = "{0, 434}"; - sepNavWindowFrame = "{{310, 58}, {1412, 924}}"; - }; - }; - B6B17FA10F1138830060F7AA /* DiskCopy42.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {883, 616}}"; - sepNavSelRange = "{150, 0}"; - sepNavVisRange = "{0, 333}"; - sepNavWindowFrame = "{{299, 31}, {1412, 924}}"; - }; - }; - B6B767C80F0FFA3900D819C9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B6DBB4E70F0C6BBD00F385F2 /* profuse.1 */; - name = "profuse.1: 10"; - rLen = 0; - rLoc = 429; - rType = 0; - vrLen = 722; - vrLoc = 2400; - }; B6C786B30F2A59AF00053681 /* profuse.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {796, 728}}"; - sepNavSelRange = "{1382, 0}"; - sepNavVisRange = "{243, 1139}"; + sepNavIntBoundsRect = "{{0, 0}, {1245, 1011}}"; + sepNavSelRange = "{1165, 0}"; + sepNavVisRange = "{0, 1449}"; }; }; B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1032, 7618}}"; - sepNavSelRange = "{8340, 0}"; - sepNavVisRange = "{7739, 948}"; + sepNavIntBoundsRect = "{{0, 0}, {873, 7371}}"; + sepNavSelRange = "{1034, 5}"; + sepNavVisRange = "{998, 1279}"; }; }; B6C786BB0F2A5C0800053681 /* profuse_dirent.cpp */ = { @@ -519,9 +381,9 @@ }; B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1198, 3016}}"; - sepNavSelRange = "{3216, 0}"; - sepNavVisRange = "{2120, 1512}"; + sepNavIntBoundsRect = "{{0, 0}, {873, 3380}}"; + sepNavSelRange = "{3263, 0}"; + sepNavVisRange = "{2706, 1000}"; }; }; B6C786C30F2A5DCE00053681 /* profuse_file.cpp */ = { @@ -531,66 +393,6 @@ sepNavVisRange = "{1323, 1590}"; }; }; - B6C786E50F2A5FF300053681 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B679E4A70F02E79300FB3F0C /* main.cpp */; - name = "main.cpp: 33"; - rLen = 0; - rLoc = 323; - rType = 0; - vrLen = 330; - vrLoc = 441; - }; - B6C786EE0F2A612600053681 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B6B17F820F103AA70060F7AA /* fuse_common.h */; - name = "fuse_common.h: 266"; - rLen = 63; - rLoc = 6850; - rType = 0; - vrLen = 708; - vrLoc = 5837; - }; - B6C786EF0F2A612600053681 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */; - name = "UniversalDiskImage.cpp: 42"; - rLen = 0; - rLoc = 820; - rType = 0; - vrLen = 463; - vrLoc = 500; - }; - B6C786F70F2A64CC00053681 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B6B17FA10F1138830060F7AA /* DiskCopy42.cpp */; - name = "DiskCopy42.cpp: 11"; - rLen = 0; - rLoc = 150; - rType = 0; - vrLen = 333; - vrLoc = 0; - }; - 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; - }; B6D81E5B0EFDE859000219B7 /* xmain.cpp:163 */ = { isa = PBXFileBreakpoint; actions = ( @@ -609,16 +411,6 @@ originalNumberOfMultipleMatches = 0; state = 2; }; - B6DA6C190FA6AFE90027FC1D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */; - name = "Disk.cpp: 243"; - rLen = 0; - rLoc = 5390; - rType = 0; - vrLen = 1006; - vrLoc = 4914; - }; B6DBB4E70F0C6BBD00F385F2 /* profuse.1 */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {883, 1162}}"; @@ -627,34 +419,4 @@ 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; - }; } diff --git a/profuse.xcodeproj/project.pbxproj b/profuse.xcodeproj/project.pbxproj index dac1c12..6882534 100644 --- a/profuse.xcodeproj/project.pbxproj +++ b/profuse.xcodeproj/project.pbxproj @@ -7,16 +7,29 @@ objects = { /* Begin PBXBuildFile section */ - B60E914F0EFB3628000E4348 /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B60E914E0EFB3628000E4348 /* File.cpp */; }; B60E91550EFB51FE000E4348 /* Disk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B60E91540EFB51FE000E4348 /* Disk.cpp */; }; - B642F12B0F132FA3001F7696 /* UniversalDiskImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */; }; + B650C2C5131090D200046FAD /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B650C2C3131090D200046FAD /* File.cpp */; }; B679E4A80F02E79300FB3F0C /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B679E4A70F02E79300FB3F0C /* main.cpp */; }; - B67F097910575F8300A13214 /* DateTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B67F097810575F8300A13214 /* DateTime.cpp */; }; - B6B17FA20F1138830060F7AA /* DiskCopy42.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6B17FA10F1138830060F7AA /* DiskCopy42.cpp */; }; B6C786B50F2A59FF00053681 /* profuse_xattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */; }; B6C786BC0F2A5C0800053681 /* profuse_dirent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6C786BB0F2A5C0800053681 /* profuse_dirent.cpp */; }; B6C786C00F2A5CC000053681 /* profuse_stat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */; }; B6C786C40F2A5DCE00053681 /* profuse_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6C786C30F2A5DCE00053681 /* profuse_file.cpp */; }; + B6DA702D131047CA00E42AA6 /* BlockCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA7027131047CA00E42AA6 /* BlockCache.cpp */; }; + B6DA702E131047CA00E42AA6 /* ConcreteBlockCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA7029131047CA00E42AA6 /* ConcreteBlockCache.cpp */; }; + B6DA702F131047CA00E42AA6 /* MappedBlockCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA702B131047CA00E42AA6 /* MappedBlockCache.cpp */; }; + B6DA7040131047D100E42AA6 /* Adaptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA7031131047D100E42AA6 /* Adaptor.cpp */; }; + B6DA7041131047D100E42AA6 /* BlockDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA7033131047D100E42AA6 /* BlockDevice.cpp */; }; + B6DA7042131047D100E42AA6 /* DavexDiskImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA7035131047D100E42AA6 /* DavexDiskImage.cpp */; }; + B6DA7043131047D100E42AA6 /* DiskCopy42Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA7037131047D100E42AA6 /* DiskCopy42Image.cpp */; }; + B6DA7044131047D100E42AA6 /* DiskImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA7039131047D100E42AA6 /* DiskImage.cpp */; }; + B6DA7045131047D100E42AA6 /* RawDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA703B131047D100E42AA6 /* RawDevice.cpp */; }; + B6DA7046131047D100E42AA6 /* UniversalDiskImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA703E131047D100E42AA6 /* UniversalDiskImage.cpp */; }; + B6DA704C131047F400E42AA6 /* Endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA7048131047F400E42AA6 /* Endian.cpp */; }; + B6DA7052131047FA00E42AA6 /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA704E131047FA00E42AA6 /* File.cpp */; }; + B6DA7053131047FA00E42AA6 /* MappedFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA7050131047FA00E42AA6 /* MappedFile.cpp */; }; + B6DA705A1310551500E42AA6 /* Exception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA70561310551500E42AA6 /* Exception.cpp */; }; + B6DA705B1310551500E42AA6 /* Lock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA70581310551500E42AA6 /* Lock.cpp */; }; + B6DA706E1310571B00E42AA6 /* DateTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DA706B1310571B00E42AA6 /* DateTime.cpp */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -33,23 +46,54 @@ /* Begin PBXFileReference section */ 8DD76F6C0486A84900D96B5E /* profuse */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = profuse; sourceTree = BUILT_PRODUCTS_DIR; }; - B60E914D0EFB3627000E4348 /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = File.h; sourceTree = ""; }; - B60E914E0EFB3628000E4348 /* File.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = File.cpp; sourceTree = ""; }; B60E91530EFB51FE000E4348 /* Disk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Disk.h; sourceTree = ""; }; B60E91540EFB51FE000E4348 /* Disk.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Disk.cpp; sourceTree = ""; }; B60E91580EFD77E3000E4348 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; - B642F1290F132FA3001F7696 /* UniversalDiskImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniversalDiskImage.h; sourceTree = ""; }; - B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UniversalDiskImage.cpp; sourceTree = ""; }; + B650C2C3131090D200046FAD /* File.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = File.cpp; sourceTree = ""; }; + B650C2C4131090D200046FAD /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = File.h; sourceTree = ""; }; + B650C2C6131095C200046FAD /* Device.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Device.h; sourceTree = ""; }; B679E4A70F02E79300FB3F0C /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - B67F097810575F8300A13214 /* DateTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateTime.cpp; sourceTree = ""; }; - B67F097A10575FD900A13214 /* DateTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateTime.h; sourceTree = ""; }; - B6B17FA00F1138830060F7AA /* DiskCopy42.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskCopy42.h; sourceTree = ""; }; - B6B17FA10F1138830060F7AA /* DiskCopy42.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiskCopy42.cpp; sourceTree = ""; }; B6C786B30F2A59AF00053681 /* profuse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profuse.h; sourceTree = ""; }; B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profuse_xattr.cpp; sourceTree = ""; }; B6C786BB0F2A5C0800053681 /* profuse_dirent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profuse_dirent.cpp; sourceTree = ""; }; B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profuse_stat.cpp; sourceTree = ""; }; B6C786C30F2A5DCE00053681 /* profuse_file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profuse_file.cpp; sourceTree = ""; }; + B6DA7027131047CA00E42AA6 /* BlockCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BlockCache.cpp; sourceTree = ""; }; + B6DA7028131047CA00E42AA6 /* BlockCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockCache.h; sourceTree = ""; }; + B6DA7029131047CA00E42AA6 /* ConcreteBlockCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConcreteBlockCache.cpp; sourceTree = ""; }; + B6DA702A131047CA00E42AA6 /* ConcreteBlockCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConcreteBlockCache.h; sourceTree = ""; }; + B6DA702B131047CA00E42AA6 /* MappedBlockCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MappedBlockCache.cpp; sourceTree = ""; }; + B6DA702C131047CA00E42AA6 /* MappedBlockCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MappedBlockCache.h; sourceTree = ""; }; + B6DA7031131047D100E42AA6 /* Adaptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Adaptor.cpp; sourceTree = ""; }; + B6DA7032131047D100E42AA6 /* Adaptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adaptor.h; sourceTree = ""; }; + B6DA7033131047D100E42AA6 /* BlockDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BlockDevice.cpp; sourceTree = ""; }; + B6DA7034131047D100E42AA6 /* BlockDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockDevice.h; sourceTree = ""; }; + B6DA7035131047D100E42AA6 /* DavexDiskImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DavexDiskImage.cpp; sourceTree = ""; }; + B6DA7036131047D100E42AA6 /* DavexDiskImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DavexDiskImage.h; sourceTree = ""; }; + B6DA7037131047D100E42AA6 /* DiskCopy42Image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiskCopy42Image.cpp; sourceTree = ""; }; + B6DA7038131047D100E42AA6 /* DiskCopy42Image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskCopy42Image.h; sourceTree = ""; }; + B6DA7039131047D100E42AA6 /* DiskImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiskImage.cpp; sourceTree = ""; }; + B6DA703A131047D100E42AA6 /* DiskImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskImage.h; sourceTree = ""; }; + B6DA703B131047D100E42AA6 /* RawDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RawDevice.cpp; sourceTree = ""; }; + B6DA703C131047D100E42AA6 /* RawDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RawDevice.h; sourceTree = ""; }; + B6DA703D131047D100E42AA6 /* TrackSector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackSector.h; sourceTree = ""; }; + B6DA703E131047D100E42AA6 /* UniversalDiskImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UniversalDiskImage.cpp; sourceTree = ""; }; + B6DA703F131047D100E42AA6 /* UniversalDiskImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniversalDiskImage.h; sourceTree = ""; }; + B6DA7048131047F400E42AA6 /* Endian.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Endian.cpp; sourceTree = ""; }; + B6DA7049131047F400E42AA6 /* Endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Endian.h; sourceTree = ""; }; + B6DA704A131047F400E42AA6 /* IOBuffer.cpp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOBuffer.cpp.h; sourceTree = ""; }; + B6DA704B131047F400E42AA6 /* IOBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOBuffer.h; sourceTree = ""; }; + B6DA704E131047FA00E42AA6 /* File.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = File.cpp; sourceTree = ""; }; + B6DA704F131047FA00E42AA6 /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = File.h; sourceTree = ""; }; + B6DA7050131047FA00E42AA6 /* MappedFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MappedFile.cpp; sourceTree = ""; }; + B6DA7051131047FA00E42AA6 /* MappedFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MappedFile.h; sourceTree = ""; }; + B6DA70551310551500E42AA6 /* auto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = auto.h; sourceTree = ""; }; + B6DA70561310551500E42AA6 /* Exception.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Exception.cpp; sourceTree = ""; }; + B6DA70571310551500E42AA6 /* Exception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Exception.h; sourceTree = ""; }; + B6DA70581310551500E42AA6 /* Lock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Lock.cpp; sourceTree = ""; }; + B6DA70591310551500E42AA6 /* Lock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lock.h; sourceTree = ""; }; + B6DA706B1310571B00E42AA6 /* DateTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateTime.cpp; sourceTree = ""; }; + B6DA706C1310571B00E42AA6 /* DateTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateTime.h; sourceTree = ""; }; B6DBB4E70F0C6BBD00F385F2 /* profuse.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = profuse.1; sourceTree = ""; }; /* End PBXFileReference section */ @@ -78,18 +122,16 @@ 08FB7795FE84155DC02AAC07 /* Source */ = { isa = PBXGroup; children = ( - B67F097810575F8300A13214 /* DateTime.cpp */, - B67F097A10575FD900A13214 /* DateTime.h */, - B642F1290F132FA3001F7696 /* UniversalDiskImage.h */, - B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */, + B6DA70681310571B00E42AA6 /* ProDOS */, + B6DA70541310551500E42AA6 /* ProFUSE */, + B6DA704D131047FA00E42AA6 /* File */, + B6DA7047131047F400E42AA6 /* Endian */, + B6DA7030131047D100E42AA6 /* Device */, + B6DA7026131047CA00E42AA6 /* Cache */, B60E91580EFD77E3000E4348 /* common.h */, B60E91530EFB51FE000E4348 /* Disk.h */, B60E91540EFB51FE000E4348 /* Disk.cpp */, - B60E914D0EFB3627000E4348 /* File.h */, - B60E914E0EFB3628000E4348 /* File.cpp */, B679E4A70F02E79300FB3F0C /* main.cpp */, - B6B17FA00F1138830060F7AA /* DiskCopy42.h */, - B6B17FA10F1138830060F7AA /* DiskCopy42.cpp */, B6C786B30F2A59AF00053681 /* profuse.h */, B6C786BB0F2A5C0800053681 /* profuse_dirent.cpp */, B6C786C30F2A5DCE00053681 /* profuse_file.cpp */, @@ -114,6 +156,87 @@ name = Libraries; sourceTree = ""; }; + B6DA7026131047CA00E42AA6 /* Cache */ = { + isa = PBXGroup; + children = ( + B6DA7027131047CA00E42AA6 /* BlockCache.cpp */, + B6DA7028131047CA00E42AA6 /* BlockCache.h */, + B6DA7029131047CA00E42AA6 /* ConcreteBlockCache.cpp */, + B6DA702A131047CA00E42AA6 /* ConcreteBlockCache.h */, + B6DA702B131047CA00E42AA6 /* MappedBlockCache.cpp */, + B6DA702C131047CA00E42AA6 /* MappedBlockCache.h */, + ); + path = Cache; + sourceTree = ""; + }; + B6DA7030131047D100E42AA6 /* Device */ = { + isa = PBXGroup; + children = ( + B6DA7031131047D100E42AA6 /* Adaptor.cpp */, + B6DA7032131047D100E42AA6 /* Adaptor.h */, + B6DA7033131047D100E42AA6 /* BlockDevice.cpp */, + B6DA7034131047D100E42AA6 /* BlockDevice.h */, + B6DA7035131047D100E42AA6 /* DavexDiskImage.cpp */, + B6DA7036131047D100E42AA6 /* DavexDiskImage.h */, + B6DA7037131047D100E42AA6 /* DiskCopy42Image.cpp */, + B6DA7038131047D100E42AA6 /* DiskCopy42Image.h */, + B6DA7039131047D100E42AA6 /* DiskImage.cpp */, + B6DA703A131047D100E42AA6 /* DiskImage.h */, + B6DA703B131047D100E42AA6 /* RawDevice.cpp */, + B6DA703C131047D100E42AA6 /* RawDevice.h */, + B6DA703D131047D100E42AA6 /* TrackSector.h */, + B6DA703E131047D100E42AA6 /* UniversalDiskImage.cpp */, + B6DA703F131047D100E42AA6 /* UniversalDiskImage.h */, + B650C2C6131095C200046FAD /* Device.h */, + ); + path = Device; + sourceTree = ""; + }; + B6DA7047131047F400E42AA6 /* Endian */ = { + isa = PBXGroup; + children = ( + B6DA7048131047F400E42AA6 /* Endian.cpp */, + B6DA7049131047F400E42AA6 /* Endian.h */, + B6DA704A131047F400E42AA6 /* IOBuffer.cpp.h */, + B6DA704B131047F400E42AA6 /* IOBuffer.h */, + ); + path = Endian; + sourceTree = ""; + }; + B6DA704D131047FA00E42AA6 /* File */ = { + isa = PBXGroup; + children = ( + B6DA704E131047FA00E42AA6 /* File.cpp */, + B6DA704F131047FA00E42AA6 /* File.h */, + B6DA7050131047FA00E42AA6 /* MappedFile.cpp */, + B6DA7051131047FA00E42AA6 /* MappedFile.h */, + ); + path = File; + sourceTree = ""; + }; + B6DA70541310551500E42AA6 /* ProFUSE */ = { + isa = PBXGroup; + children = ( + B6DA70551310551500E42AA6 /* auto.h */, + B6DA70561310551500E42AA6 /* Exception.cpp */, + B6DA70571310551500E42AA6 /* Exception.h */, + B6DA70581310551500E42AA6 /* Lock.cpp */, + B6DA70591310551500E42AA6 /* Lock.h */, + ); + path = ProFUSE; + sourceTree = ""; + }; + B6DA70681310571B00E42AA6 /* ProDOS */ = { + isa = PBXGroup; + children = ( + B650C2C3131090D200046FAD /* File.cpp */, + B650C2C4131090D200046FAD /* File.h */, + B6DA706B1310571B00E42AA6 /* DateTime.cpp */, + B6DA706C1310571B00E42AA6 /* DateTime.h */, + ); + path = ProDOS; + sourceTree = ""; + }; C6859E8C029090F304C91782 /* Documentation */ = { isa = PBXGroup; children = ( @@ -150,7 +273,11 @@ isa = PBXProject; buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "profuse" */; compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; hasScannedForEncodings = 1; + knownRegions = ( + en, + ); mainGroup = 08FB7794FE84155DC02AAC07 /* ProDOS-Fuse */; projectDirPath = ""; projectRoot = ""; @@ -165,16 +292,29 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B60E914F0EFB3628000E4348 /* File.cpp in Sources */, B60E91550EFB51FE000E4348 /* Disk.cpp in Sources */, B679E4A80F02E79300FB3F0C /* main.cpp in Sources */, - B6B17FA20F1138830060F7AA /* DiskCopy42.cpp in Sources */, - B642F12B0F132FA3001F7696 /* UniversalDiskImage.cpp in Sources */, B6C786B50F2A59FF00053681 /* profuse_xattr.cpp in Sources */, B6C786BC0F2A5C0800053681 /* profuse_dirent.cpp in Sources */, B6C786C00F2A5CC000053681 /* profuse_stat.cpp in Sources */, B6C786C40F2A5DCE00053681 /* profuse_file.cpp in Sources */, - B67F097910575F8300A13214 /* DateTime.cpp in Sources */, + B6DA702D131047CA00E42AA6 /* BlockCache.cpp in Sources */, + B6DA702E131047CA00E42AA6 /* ConcreteBlockCache.cpp in Sources */, + B6DA702F131047CA00E42AA6 /* MappedBlockCache.cpp in Sources */, + B6DA7040131047D100E42AA6 /* Adaptor.cpp in Sources */, + B6DA7041131047D100E42AA6 /* BlockDevice.cpp in Sources */, + B6DA7042131047D100E42AA6 /* DavexDiskImage.cpp in Sources */, + B6DA7043131047D100E42AA6 /* DiskCopy42Image.cpp in Sources */, + B6DA7044131047D100E42AA6 /* DiskImage.cpp in Sources */, + B6DA7045131047D100E42AA6 /* RawDevice.cpp in Sources */, + B6DA7046131047D100E42AA6 /* UniversalDiskImage.cpp in Sources */, + B6DA704C131047F400E42AA6 /* Endian.cpp in Sources */, + B6DA7052131047FA00E42AA6 /* File.cpp in Sources */, + B6DA7053131047FA00E42AA6 /* MappedFile.cpp in Sources */, + B6DA705A1310551500E42AA6 /* Exception.cpp in Sources */, + B6DA705B1310551500E42AA6 /* Lock.cpp in Sources */, + B6DA706E1310571B00E42AA6 /* DateTime.cpp in Sources */, + B650C2C5131090D200046FAD /* File.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -190,10 +330,8 @@ GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "_GLIBCXX_DEBUG=1", - "_GLIBCXX_DEBUG_PEDANTIC=1", - ); + GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_VERSION = com.apple.compilers.llvmgcc42; INSTALL_PATH = /usr/local/bin; PRODUCT_NAME = profuse; }; @@ -205,6 +343,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_MODEL_TUNING = G5; + GCC_VERSION = com.apple.compilers.llvmgcc42; INSTALL_PATH = /usr/local/bin; PRODUCT_NAME = "ProDOS-Fuse"; }; @@ -217,9 +356,13 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = /usr/local/include/fuse; + HEADER_SEARCH_PATHS = ( + /usr/local/include/fuse, + ., + ); ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-D__FreeBSD__=10", @@ -232,7 +375,7 @@ "-lfuse_ino64", ); PREBINDING = NO; - SDKROOT = macosx10.5; + SDKROOT = macosx; }; name = Debug; }; @@ -241,10 +384,11 @@ buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; GCC_C_LANGUAGE_STANDARD = c99; + GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; PREBINDING = NO; - SDKROOT = macosx10.5; + SDKROOT = macosx; }; name = Release; }; @@ -255,9 +399,13 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = /usr/local/include/fuse; + HEADER_SEARCH_PATHS = ( + /usr/local/include/fuse, + ., + ); ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-D__FreeBSD__=10", @@ -270,7 +418,7 @@ "-lfuse_ino64", ); PREBINDING = NO; - SDKROOT = macosx10.5; + SDKROOT = macosx; }; name = "Debug Universal"; }; @@ -283,10 +431,8 @@ GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "_GLIBCXX_DEBUG=1", - "_GLIBCXX_DEBUG_PEDANTIC=1", - ); + GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_VERSION = com.apple.compilers.llvmgcc42; INSTALL_PATH = /usr/local/bin; PRODUCT_NAME = profuse; }; @@ -299,9 +445,13 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = /usr/local/include/fuse; + HEADER_SEARCH_PATHS = ( + /usr/local/include/fuse, + ., + ); ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-D__FreeBSD__=10", @@ -314,7 +464,7 @@ "-lfuse_ino64", ); PREBINDING = NO; - SDKROOT = macosx10.6; + SDKROOT = macosx; VALID_ARCHS = "i386 x86_64"; }; name = "Debug 10.6"; @@ -328,10 +478,8 @@ GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "_GLIBCXX_DEBUG=1", - "_GLIBCXX_DEBUG_PEDANTIC=1", - ); + GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_VERSION = com.apple.compilers.llvmgcc42; INSTALL_PATH = /usr/local/bin; PRODUCT_NAME = profuse; }; @@ -344,9 +492,14 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = /usr/local/include/fuse; + HEADER_SEARCH_PATHS = ( + /usr/local/include/fuse, + ., + ); + MACOSX_DEPLOYMENT_TARGET = 10.4; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-D__FreeBSD__=10", @@ -357,7 +510,7 @@ "-lfuse", ); PREBINDING = NO; - SDKROOT = macosx10.4; + SDKROOT = macosx; }; name = "Debug Universal 10.4"; }; @@ -370,10 +523,8 @@ GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "_GLIBCXX_DEBUG=1", - "_GLIBCXX_DEBUG_PEDANTIC=1", - ); + GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_VERSION = com.apple.compilers.llvmgcc42; INSTALL_PATH = /usr/local/bin; PRODUCT_NAME = profuse; }; diff --git a/profuse_stat.cpp b/profuse_stat.cpp index 4cc9ccd..68e8546 100644 --- a/profuse_stat.cpp +++ b/profuse_stat.cpp @@ -16,6 +16,8 @@ #include +#include +#include using std::vector; @@ -217,3 +219,34 @@ void prodos_lookup(fuse_req_t req, fuse_ino_t parent, const char *name) fuse_reply_entry(req, &entry); } + + + +void prodos_statfs(fuse_req_t req, fuse_ino_t ino) +{ + struct statvfs vst; + + VolumeEntry volume; + + + disk->ReadVolume(&volume, NULL); + + // returns statvfs for the mount path or any file in the fs + // therefore, ignore ino. + std::memset(&vst, 0, sizeof(vst)); + + vst.f_bsize = 512; // fs block size + vst.f_frsize = 512; // fundamental fs block size + vst.f_blocks = volume.total_blocks; + vst.f_bfree = 0; // free blocks + vst.f_bavail = 0; // free blocks (non-root) + vst.f_files = 0; // ? + vst.f_ffree = -1; // free inodes. + vst.f_favail = -1; // free inodes (non-root) + vst.f_fsid = 0; // file system id? + vst.f_flag = ST_RDONLY | ST_NOSUID; + vst.f_namemax = 15; + + fuse_reply_statfs(req, &vst); +} +