This commit is contained in:
ksherlock 2011-02-28 04:28:40 +00:00
parent 8550923cb3
commit 68a7851f33
10 changed files with 338 additions and 572 deletions

View File

@ -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.

View File

@ -1,63 +0,0 @@
/*
* DiskCopy42.cpp
* profuse
*
* Created by Kelvin Sherlock on 1/4/09.
*
*/
#include "DiskCopy42.h"
#include "common.h"
#include <string.h>
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;
}

View File

@ -1,31 +0,0 @@
/*
* DiskCopy42.h
* profuse
*
* Created by Kelvin Sherlock on 1/4/09.
*
*/
#ifndef __DISKCOPY42__
#define __DISKCOPY42__
#include <stdint.h>
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

View File

@ -1,51 +0,0 @@
/*
* UniversalDiskImage.cpp
* profuse
*
* Created by Kelvin Sherlock on 1/6/09.
*
*/
#include "UniversalDiskImage.h"
#include "common.h"
#include <string.h>
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;
}

View File

@ -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 <stdint.h>
#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

View File

@ -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)

View File

@ -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);

View File

@ -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 = "<absolute>";
};
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;
};
}

View File

@ -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 = "<group>"; };
B60E914E0EFB3628000E4348 /* File.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = File.cpp; sourceTree = "<group>"; };
B60E91530EFB51FE000E4348 /* Disk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Disk.h; sourceTree = "<group>"; };
B60E91540EFB51FE000E4348 /* Disk.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Disk.cpp; sourceTree = "<group>"; };
B60E91580EFD77E3000E4348 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = "<group>"; };
B642F1290F132FA3001F7696 /* UniversalDiskImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniversalDiskImage.h; sourceTree = "<group>"; };
B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UniversalDiskImage.cpp; sourceTree = "<group>"; };
B650C2C3131090D200046FAD /* File.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = File.cpp; sourceTree = "<group>"; };
B650C2C4131090D200046FAD /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = File.h; sourceTree = "<group>"; };
B650C2C6131095C200046FAD /* Device.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Device.h; sourceTree = "<group>"; };
B679E4A70F02E79300FB3F0C /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
B67F097810575F8300A13214 /* DateTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateTime.cpp; sourceTree = "<group>"; };
B67F097A10575FD900A13214 /* DateTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateTime.h; sourceTree = "<group>"; };
B6B17FA00F1138830060F7AA /* DiskCopy42.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskCopy42.h; sourceTree = "<group>"; };
B6B17FA10F1138830060F7AA /* DiskCopy42.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiskCopy42.cpp; sourceTree = "<group>"; };
B6C786B30F2A59AF00053681 /* profuse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profuse.h; sourceTree = "<group>"; };
B6C786B40F2A59FE00053681 /* profuse_xattr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profuse_xattr.cpp; sourceTree = "<group>"; };
B6C786BB0F2A5C0800053681 /* profuse_dirent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profuse_dirent.cpp; sourceTree = "<group>"; };
B6C786BF0F2A5CC000053681 /* profuse_stat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profuse_stat.cpp; sourceTree = "<group>"; };
B6C786C30F2A5DCE00053681 /* profuse_file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profuse_file.cpp; sourceTree = "<group>"; };
B6DA7027131047CA00E42AA6 /* BlockCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BlockCache.cpp; sourceTree = "<group>"; };
B6DA7028131047CA00E42AA6 /* BlockCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockCache.h; sourceTree = "<group>"; };
B6DA7029131047CA00E42AA6 /* ConcreteBlockCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConcreteBlockCache.cpp; sourceTree = "<group>"; };
B6DA702A131047CA00E42AA6 /* ConcreteBlockCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConcreteBlockCache.h; sourceTree = "<group>"; };
B6DA702B131047CA00E42AA6 /* MappedBlockCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MappedBlockCache.cpp; sourceTree = "<group>"; };
B6DA702C131047CA00E42AA6 /* MappedBlockCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MappedBlockCache.h; sourceTree = "<group>"; };
B6DA7031131047D100E42AA6 /* Adaptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Adaptor.cpp; sourceTree = "<group>"; };
B6DA7032131047D100E42AA6 /* Adaptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adaptor.h; sourceTree = "<group>"; };
B6DA7033131047D100E42AA6 /* BlockDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BlockDevice.cpp; sourceTree = "<group>"; };
B6DA7034131047D100E42AA6 /* BlockDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockDevice.h; sourceTree = "<group>"; };
B6DA7035131047D100E42AA6 /* DavexDiskImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DavexDiskImage.cpp; sourceTree = "<group>"; };
B6DA7036131047D100E42AA6 /* DavexDiskImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DavexDiskImage.h; sourceTree = "<group>"; };
B6DA7037131047D100E42AA6 /* DiskCopy42Image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiskCopy42Image.cpp; sourceTree = "<group>"; };
B6DA7038131047D100E42AA6 /* DiskCopy42Image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskCopy42Image.h; sourceTree = "<group>"; };
B6DA7039131047D100E42AA6 /* DiskImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiskImage.cpp; sourceTree = "<group>"; };
B6DA703A131047D100E42AA6 /* DiskImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskImage.h; sourceTree = "<group>"; };
B6DA703B131047D100E42AA6 /* RawDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RawDevice.cpp; sourceTree = "<group>"; };
B6DA703C131047D100E42AA6 /* RawDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RawDevice.h; sourceTree = "<group>"; };
B6DA703D131047D100E42AA6 /* TrackSector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackSector.h; sourceTree = "<group>"; };
B6DA703E131047D100E42AA6 /* UniversalDiskImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UniversalDiskImage.cpp; sourceTree = "<group>"; };
B6DA703F131047D100E42AA6 /* UniversalDiskImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniversalDiskImage.h; sourceTree = "<group>"; };
B6DA7048131047F400E42AA6 /* Endian.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Endian.cpp; sourceTree = "<group>"; };
B6DA7049131047F400E42AA6 /* Endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Endian.h; sourceTree = "<group>"; };
B6DA704A131047F400E42AA6 /* IOBuffer.cpp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOBuffer.cpp.h; sourceTree = "<group>"; };
B6DA704B131047F400E42AA6 /* IOBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOBuffer.h; sourceTree = "<group>"; };
B6DA704E131047FA00E42AA6 /* File.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = File.cpp; sourceTree = "<group>"; };
B6DA704F131047FA00E42AA6 /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = File.h; sourceTree = "<group>"; };
B6DA7050131047FA00E42AA6 /* MappedFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MappedFile.cpp; sourceTree = "<group>"; };
B6DA7051131047FA00E42AA6 /* MappedFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MappedFile.h; sourceTree = "<group>"; };
B6DA70551310551500E42AA6 /* auto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = auto.h; sourceTree = "<group>"; };
B6DA70561310551500E42AA6 /* Exception.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Exception.cpp; sourceTree = "<group>"; };
B6DA70571310551500E42AA6 /* Exception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Exception.h; sourceTree = "<group>"; };
B6DA70581310551500E42AA6 /* Lock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Lock.cpp; sourceTree = "<group>"; };
B6DA70591310551500E42AA6 /* Lock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lock.h; sourceTree = "<group>"; };
B6DA706B1310571B00E42AA6 /* DateTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DateTime.cpp; sourceTree = "<group>"; };
B6DA706C1310571B00E42AA6 /* DateTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateTime.h; sourceTree = "<group>"; };
B6DBB4E70F0C6BBD00F385F2 /* profuse.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = profuse.1; sourceTree = "<group>"; };
/* 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 = "<group>";
};
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 = "<group>";
};
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 = "<group>";
};
B6DA7047131047F400E42AA6 /* Endian */ = {
isa = PBXGroup;
children = (
B6DA7048131047F400E42AA6 /* Endian.cpp */,
B6DA7049131047F400E42AA6 /* Endian.h */,
B6DA704A131047F400E42AA6 /* IOBuffer.cpp.h */,
B6DA704B131047F400E42AA6 /* IOBuffer.h */,
);
path = Endian;
sourceTree = "<group>";
};
B6DA704D131047FA00E42AA6 /* File */ = {
isa = PBXGroup;
children = (
B6DA704E131047FA00E42AA6 /* File.cpp */,
B6DA704F131047FA00E42AA6 /* File.h */,
B6DA7050131047FA00E42AA6 /* MappedFile.cpp */,
B6DA7051131047FA00E42AA6 /* MappedFile.h */,
);
path = File;
sourceTree = "<group>";
};
B6DA70541310551500E42AA6 /* ProFUSE */ = {
isa = PBXGroup;
children = (
B6DA70551310551500E42AA6 /* auto.h */,
B6DA70561310551500E42AA6 /* Exception.cpp */,
B6DA70571310551500E42AA6 /* Exception.h */,
B6DA70581310551500E42AA6 /* Lock.cpp */,
B6DA70591310551500E42AA6 /* Lock.h */,
);
path = ProFUSE;
sourceTree = "<group>";
};
B6DA70681310571B00E42AA6 /* ProDOS */ = {
isa = PBXGroup;
children = (
B650C2C3131090D200046FAD /* File.cpp */,
B650C2C4131090D200046FAD /* File.h */,
B6DA706B1310571B00E42AA6 /* DateTime.cpp */,
B6DA706C1310571B00E42AA6 /* DateTime.h */,
);
path = ProDOS;
sourceTree = "<group>";
};
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;
};

View File

@ -16,6 +16,8 @@
#include <vector>
#include <sys/stat.h>
#include <sys/statvfs.h>
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);
}