cleaner disk copy/ 2mg support

git-svn-id: https://profuse.googlecode.com/svn/trunk@12 aa027e90-d47c-11dd-86d7-074df07e0730
This commit is contained in:
ksherlock 2009-01-06 07:37:50 +00:00
parent 193e1ab933
commit 1b6a7fab18
9 changed files with 536 additions and 126 deletions

View File

@ -7,6 +7,9 @@
*/
#include "Disk.h"
#include "DiskCopy42.h"
#include "UniversalDiskImage.h"
#include "common.h"
#include <fcntl.h>
@ -78,13 +81,8 @@ Disk *Disk::OpenFile(const char *file)
offset = 0;
}
else {
// check for disk copy 4.2:
// 800k disk, but there's a 84-byte header
// and possible tag data (???)
// +80 = 0x01 (800K Disk)
// +81 = 0x24 (800K ProDOS disk)
// +82 = 0x01
// +83 = 0x00
// check for disk copy4.2 / universal disk image.
uint8_t buffer[1024];
if (read(fd, buffer, 1024) != 1024)
@ -92,31 +90,39 @@ Disk *Disk::OpenFile(const char *file)
close(fd);
return NULL;
}
bool ok = false;
for(;;)
{
DiskCopy42 dc;
if (dc.Load(buffer)
&& size == 84 + dc.data_size + dc.tag_size
&& (dc.data_size & 0x1ff) == 0)
{
offset = 84;
blocks = dc.data_size >> 9;
ok = true;
break;
}
UniversalDiskImage udi;
if (udi.Load(buffer)
&& udi.version == 1
&& udi.image_format == UDI_FORMAT_PRODOS_ORDER)
{
blocks = udi.data_blocks;
offset = udi.data_offset;
ok = true;
break;
}
}
if (size == 819284
&& buffer[80] == 0x01
&& buffer[81] == 0x24
&& buffer[82] == 0x01
&& buffer[83] == 0x00)
{
// Disk Copy.
// currently ignoring the checksum.
blocks = 819284 >> 9;
offset = 84;
}
// check 2mg.
else if (buffer[0] == '2'
&& buffer[1] == 'I'
&& buffer[2] == 'M'
&& buffer[3] == 'G'
&& buffer[0x0c] == 0x01 // ProDOS order
)
{
//
blocks = load32(&buffer[0x14]);
offset = load32(&buffer[0x18]);
}
else
if (!ok)
{
close(fd);
return NULL;

39
DiskCopy42.cpp Normal file
View File

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

30
DiskCopy42.h Normal file
View File

@ -0,0 +1,30 @@
/*
* 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);
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

50
UniversalDiskImage.cpp Normal file
View File

@ -0,0 +1,50 @@
/*
* 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;
}

39
UniversalDiskImage.h Normal file
View File

@ -0,0 +1,39 @@
/*
* 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

@ -13,6 +13,8 @@
#define BLOCK_SIZE 512
// little endian.
inline unsigned load16(const uint8_t *cp)
{
return (cp[1] << 8 ) | cp[0];
@ -29,6 +31,18 @@ inline unsigned load32(const uint8_t *cp)
}
// big endian format.
inline unsigned load16_be(const uint8_t *cp)
{
return (cp[0] << 8) | (cp[1]);
}
inline unsigned load32_be(const uint8_t *cp)
{
return (cp[0] << 24) | (cp[1] << 16) | (cp[2] << 8) | (cp[3]);
}
#endif

View File

@ -282,8 +282,8 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
<integer>11</integer>
<integer>10</integer>
<integer>6</integer>
<integer>1</integer>
<integer>0</integer>
</array>
</array>
@ -309,7 +309,7 @@
<real>224</real>
</array>
<key>RubberWindowFrame</key>
<string>292 331 1212 568 0 0 1920 1178 </string>
<string>405 460 1212 568 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -325,7 +325,7 @@
<key>PBXProjectModuleGUID</key>
<string>1CE0B20306471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>fuse_common.h</string>
<string>common.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -333,21 +333,22 @@
<key>PBXProjectModuleGUID</key>
<string>1CE0B20406471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>fuse_common.h</string>
<string>common.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>B6B17F490F1027CE0060F7AA</string>
<string>B642F15A0F133632001F7696</string>
<key>history</key>
<array>
<string>B6614B050EFF5F280073C4E7</string>
<string>B679E4A20F02E77700FB3F0C</string>
<string>B679E4B60F02EFA200FB3F0C</string>
<string>B6643BF00F0708B400630102</string>
<string>B634B4FA0F09BFB100D9D93E</string>
<string>B6DBB4F10F0C6CD800F385F2</string>
<string>B6B767C80F0FFA3900D819C9</string>
<string>B6B767F00F0FFEE300D819C9</string>
<string>B6B17F940F1136550060F7AA</string>
<string>B642F1530F133632001F7696</string>
<string>B642F1540F133632001F7696</string>
<string>B642F1550F133632001F7696</string>
<string>B642F1560F133632001F7696</string>
</array>
<key>prevStack</key>
<array>
@ -358,6 +359,11 @@
<string>B60E929C0EFDA500000E4348</string>
<string>B679E4BB0F02EFA200FB3F0C</string>
<string>B6B767CB0F0FFA3900D819C9</string>
<string>B6B17F950F1136550060F7AA</string>
<string>B6B17FA80F1140160060F7AA</string>
<string>B642F1570F133632001F7696</string>
<string>B642F1580F133632001F7696</string>
<string>B642F1590F133632001F7696</string>
</array>
</dict>
<key>SplitCount</key>
@ -371,7 +377,7 @@
<key>Frame</key>
<string>{{0, 0}, {944, 349}}</string>
<key>RubberWindowFrame</key>
<string>292 331 1212 568 0 0 1920 1178 </string>
<string>405 460 1212 568 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@ -391,7 +397,7 @@
<key>Frame</key>
<string>{{0, 354}, {944, 173}}</string>
<key>RubberWindowFrame</key>
<string>292 331 1212 568 0 0 1920 1178 </string>
<string>405 460 1212 568 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -415,9 +421,9 @@
</array>
<key>TableOfContents</key>
<array>
<string>B6B17F360F1024010060F7AA</string>
<string>B642F15B0F133632001F7696</string>
<string>1CE0B1FE06471DED0097A5F4</string>
<string>B6B17F370F1024010060F7AA</string>
<string>B642F15C0F133632001F7696</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
@ -551,13 +557,12 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>1C78EAAD065D492600B07095</string>
<string>1CD10A99069EF8BA00B06720</string>
<string>B60E918C0EFD7E1E000E4348</string>
<string>1CD10A99069EF8BA00B06720</string>
<string>/Users/kelvin/Projects/profuse/profuse.xcodeproj</string>
</array>
<key>WindowString</key>
<string>292 331 1212 568 0 0 1920 1178 </string>
<string>405 460 1212 568 0 0 1920 1178 </string>
<key>WindowToolsV3</key>
<array>
<dict>
@ -573,32 +578,34 @@
<key>Dock</key>
<array>
<dict>
<key>BecomeActive</key>
<true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CD0528F0623707200166675</string>
<key>PBXProjectModuleLabel</key>
<string></string>
<string>Disk.cpp</string>
<key>StatusBarVisibility</key>
<true/>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {857, 240}}</string>
<string>{{0, 0}, {857, 500}}</string>
<key>RubberWindowFrame</key>
<string>352 195 857 922 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>240pt</string>
<string>500pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXBuildLogShowsTranscriptDefaultKey</key>
<string>{{0, 187}, {857, 449}}</string>
<string>{{0, 5}, {857, 371}}</string>
<key>PBXProjectModuleGUID</key>
<string>XCMainBuildResultsModuleGUID</string>
<key>PBXProjectModuleLabel</key>
@ -611,14 +618,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 245}, {857, 636}}</string>
<string>{{0, 505}, {857, 376}}</string>
<key>RubberWindowFrame</key>
<string>352 195 857 922 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
<key>Proportion</key>
<string>636pt</string>
<string>376pt</string>
</dict>
</array>
<key>Proportion</key>
@ -636,7 +643,7 @@
<key>TableOfContents</key>
<array>
<string>B60E918C0EFD7E1E000E4348</string>
<string>B6B17F380F1024010060F7AA</string>
<string>B642F1460F1334BC001F7696</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
@ -756,13 +763,13 @@
<key>TableOfContents</key>
<array>
<string>1CD10A99069EF8BA00B06720</string>
<string>B6B17F390F1024010060F7AA</string>
<string>B642F1470F1334BC001F7696</string>
<string>1C162984064C10D400B95A72</string>
<string>B6B17F3A0F1024010060F7AA</string>
<string>B6B17F3B0F1024010060F7AA</string>
<string>B6B17F3C0F1024010060F7AA</string>
<string>B6B17F3D0F1024010060F7AA</string>
<string>B6B17F3E0F1024010060F7AA</string>
<string>B642F1480F1334BC001F7696</string>
<string>B642F1490F1334BC001F7696</string>
<string>B642F14A0F1334BC001F7696</string>
<string>B642F14B0F1334BC001F7696</string>
<string>B642F14C0F1334BC001F7696</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
@ -1065,7 +1072,7 @@
<key>TableOfContents</key>
<array>
<string>B60E929F0EFDA500000E4348</string>
<string>B6B767EC0F0FFE9500D819C9</string>
<string>B6B17F530F1029FF0060F7AA</string>
<string>1C78EAB2065D492600B07095</string>
<string>1CD052920623707200166675</string>
</array>

View File

@ -87,8 +87,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 252715947;
PBXWorkspaceStateSaveDate = 252715947;
PBXPerProjectTemplateStateSaveDate = 252915151;
PBXWorkspaceStateSaveDate = 252915151;
};
perUserProjectItems = {
B60E917F0EFD7E1E000E4348 = B60E917F0EFD7E1E000E4348 /* PBXTextBookmark */;
@ -96,18 +96,36 @@
B60E91810EFD7E1E000E4348 = B60E91810EFD7E1E000E4348 /* PBXTextBookmark */;
B60E922B0EFD94CA000E4348 = B60E922B0EFD94CA000E4348 /* PBXTextBookmark */;
B60E929C0EFDA500000E4348 = B60E929C0EFDA500000E4348 /* PBXTextBookmark */;
B634B4FA0F09BFB100D9D93E = B634B4FA0F09BFB100D9D93E /* PBXTextBookmark */;
B642F1420F1334BC001F7696 /* PBXTextBookmark */ = B642F1420F1334BC001F7696 /* PBXTextBookmark */;
B642F1430F1334BC001F7696 /* PBXTextBookmark */ = B642F1430F1334BC001F7696 /* PBXTextBookmark */;
B642F1440F1334BC001F7696 /* PBXTextBookmark */ = B642F1440F1334BC001F7696 /* PBXTextBookmark */;
B642F1450F1334BC001F7696 /* PBXTextBookmark */ = B642F1450F1334BC001F7696 /* PBXTextBookmark */;
B642F14F0F133629001F7696 /* PBXTextBookmark */ = B642F14F0F133629001F7696 /* PBXTextBookmark */;
B642F1500F133629001F7696 /* PBXTextBookmark */ = B642F1500F133629001F7696 /* PBXTextBookmark */;
B642F1510F133629001F7696 /* PBXTextBookmark */ = B642F1510F133629001F7696 /* PBXTextBookmark */;
B642F1520F133629001F7696 /* PBXTextBookmark */ = B642F1520F133629001F7696 /* PBXTextBookmark */;
B642F1530F133632001F7696 /* PBXTextBookmark */ = B642F1530F133632001F7696 /* PBXTextBookmark */;
B642F1540F133632001F7696 /* PBXTextBookmark */ = B642F1540F133632001F7696 /* PBXTextBookmark */;
B642F1550F133632001F7696 /* PBXTextBookmark */ = B642F1550F133632001F7696 /* PBXTextBookmark */;
B642F1560F133632001F7696 /* PBXTextBookmark */ = B642F1560F133632001F7696 /* PBXTextBookmark */;
B642F1570F133632001F7696 /* PBXTextBookmark */ = B642F1570F133632001F7696 /* PBXTextBookmark */;
B642F1580F133632001F7696 /* PBXTextBookmark */ = B642F1580F133632001F7696 /* PBXTextBookmark */;
B642F1590F133632001F7696 /* PBXTextBookmark */ = B642F1590F133632001F7696 /* PBXTextBookmark */;
B642F15A0F133632001F7696 /* PBXTextBookmark */ = B642F15A0F133632001F7696 /* PBXTextBookmark */;
B6614B050EFF5F280073C4E7 = B6614B050EFF5F280073C4E7 /* PBXTextBookmark */;
B6643BF00F0708B400630102 = B6643BF00F0708B400630102 /* PBXTextBookmark */;
B679E4A20F02E77700FB3F0C = B679E4A20F02E77700FB3F0C /* PBXTextBookmark */;
B679E4B60F02EFA200FB3F0C = B679E4B60F02EFA200FB3F0C /* PBXTextBookmark */;
B679E4BB0F02EFA200FB3F0C = B679E4BB0F02EFA200FB3F0C /* PBXTextBookmark */;
B6B17F350F1024010060F7AA /* PBXTextBookmark */ = B6B17F350F1024010060F7AA /* PBXTextBookmark */;
B6B17F490F1027CE0060F7AA /* PBXTextBookmark */ = B6B17F490F1027CE0060F7AA /* PBXTextBookmark */;
B6B17F940F1136550060F7AA = B6B17F940F1136550060F7AA /* PBXTextBookmark */;
B6B17F950F1136550060F7AA = B6B17F950F1136550060F7AA /* PBXTextBookmark */;
B6B17FA50F1140160060F7AA = B6B17FA50F1140160060F7AA /* PBXTextBookmark */;
B6B17FA60F1140160060F7AA = B6B17FA60F1140160060F7AA /* PBXTextBookmark */;
B6B17FA70F1140160060F7AA = B6B17FA70F1140160060F7AA /* PBXTextBookmark */;
B6B17FA80F1140160060F7AA = B6B17FA80F1140160060F7AA /* PBXTextBookmark */;
B6B17FB90F1140DC0060F7AA = B6B17FB90F1140DC0060F7AA /* PBXTextBookmark */;
B6B767C80F0FFA3900D819C9 = B6B767C80F0FFA3900D819C9 /* PBXTextBookmark */;
B6B767C90F0FFA3900D819C9 = B6B767C90F0FFA3900D819C9 /* PBXTextBookmark */;
B6B767CB0F0FFA3900D819C9 = B6B767CB0F0FFA3900D819C9 /* PBXTextBookmark */;
B6B767F00F0FFEE300D819C9 = B6B767F00F0FFEE300D819C9 /* PBXTextBookmark */;
B6DBB4F10F0C6CD800F385F2 = B6DBB4F10F0C6CD800F385F2 /* PBXTextBookmark */;
};
sourceControlManager = B60E91500EFB3628000E4348 /* Source Control */;
@ -161,17 +179,17 @@
};
B60E914D0EFB3627000E4348 /* File.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {496, 2072}}";
sepNavIntBoundsRect = "{{0, 0}, {496, 2030}}";
sepNavSelRange = "{25, 0}";
sepNavVisRange = "{0, 1187}";
sepNavVisRange = "{1119, 1284}";
sepNavWindowFrame = "{{95, -86}, {555, 1173}}";
};
};
B60E914E0EFB3628000E4348 /* File.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {496, 3892}}";
sepNavSelRange = "{27, 0}";
sepNavVisRange = "{0, 1472}";
sepNavIntBoundsRect = "{{0, 0}, {883, 3822}}";
sepNavSelRange = "{3668, 0}";
sepNavVisRange = "{1287, 532}";
sepNavWindowFrame = "{{667, -9}, {555, 1173}}";
};
};
@ -197,17 +215,17 @@
};
B60E91540EFB51FE000E4348 /* Disk.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {633, 7910}}";
sepNavSelRange = "{27, 0}";
sepNavVisRange = "{0, 1149}";
sepNavIntBoundsRect = "{{0, 0}, {796, 7896}}";
sepNavSelRange = "{157, 0}";
sepNavVisRange = "{1318, 1181}";
sepNavWindowFrame = "{{511, 7}, {692, 1171}}";
};
};
B60E91580EFD77E3000E4348 /* common.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {633, 1043}}";
sepNavSelRange = "{27, 0}";
sepNavVisRange = "{0, 474}";
sepNavIntBoundsRect = "{{0, 0}, {883, 686}}";
sepNavSelRange = "{627, 0}";
sepNavVisRange = "{0, 313}";
sepNavWindowFrame = "{{15, 2}, {692, 1171}}";
};
};
@ -295,14 +313,173 @@
vrLen = 345;
vrLoc = 1359;
};
B634B4FA0F09BFB100D9D93E /* PBXTextBookmark */ = {
B642F1290F132FA3001F7696 /* UniversalDiskImage.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1353, 796}}";
sepNavSelRange = "{225, 23}";
sepNavVisRange = "{0, 707}";
};
};
B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {796, 700}}";
sepNavSelRange = "{820, 0}";
sepNavVisRange = "{293, 671}";
sepNavWindowFrame = "{{447, 64}, {1412, 924}}";
};
};
B642F1420F1334BC001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E91580EFD77E3000E4348 /* common.h */;
name = "common.h: 40";
rLen = 0;
rLoc = 627;
rType = 0;
vrLen = 550;
vrLoc = 171;
};
B642F1430F1334BC001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
comments = "error: 'DiskCopy42' was not declared in this scope";
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
rLen = 1;
rLoc = 97;
rType = 1;
};
B642F1440F1334BC001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E91580EFD77E3000E4348 /* common.h */;
name = "common.h: 40";
rLen = 0;
rLoc = 627;
rType = 0;
vrLen = 550;
vrLoc = 171;
};
B642F1450F1334BC001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
name = "Disk.cpp: 324";
name = "Disk.cpp: 12";
rLen = 0;
rLoc = 7441;
rLoc = 157;
rType = 0;
vrLen = 351;
vrLen = 820;
vrLoc = 3068;
};
B642F14F0F133629001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
name = "Disk.cpp: 12";
rLen = 0;
rLoc = 157;
rType = 0;
vrLen = 1181;
vrLoc = 1318;
};
B642F1500F133629001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
comments = "error: 'creator_offset' was not declared in this scope";
fRef = B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */;
rLen = 1;
rLoc = 42;
rType = 1;
};
B642F1510F133629001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
name = "Disk.cpp: 12";
rLen = 0;
rLoc = 157;
rType = 0;
vrLen = 1181;
vrLoc = 1318;
};
B642F1520F133629001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */;
name = "UniversalDiskImage.cpp: 42";
rLen = 0;
rLoc = 820;
rType = 0;
vrLen = 671;
vrLoc = 293;
};
B642F1530F133632001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E914E0EFB3628000E4348 /* File.cpp */;
name = "File.cpp: 176";
rLen = 0;
rLoc = 3668;
rType = 0;
vrLen = 532;
vrLoc = 1287;
};
B642F1540F133632001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B6B17FA00F1138830060F7AA /* DiskCopy42.h */;
name = "DiskCopy42.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 355;
vrLoc = 0;
};
B642F1550F133632001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
name = "Disk.cpp: 364";
rLen = 0;
rLoc = 7418;
rType = 0;
vrLen = 325;
vrLoc = 28;
};
B642F1560F133632001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
comments = "error: expected ',' or '...' before '*' token";
fRef = B60E91580EFD77E3000E4348 /* common.h */;
rLen = 1;
rLoc = 39;
rType = 1;
};
B642F1570F133632001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E914E0EFB3628000E4348 /* File.cpp */;
name = "File.cpp: 176";
rLen = 0;
rLoc = 3668;
rType = 0;
vrLen = 532;
vrLoc = 1287;
};
B642F1580F133632001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B6B17FA00F1138830060F7AA /* DiskCopy42.h */;
name = "DiskCopy42.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 355;
vrLoc = 0;
};
B642F1590F133632001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
name = "Disk.cpp: 364";
rLen = 0;
rLoc = 7418;
rType = 0;
vrLen = 325;
vrLoc = 28;
};
B642F15A0F133632001F7696 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E91580EFD77E3000E4348 /* common.h */;
name = "common.h: 40";
rLen = 0;
rLoc = 627;
rType = 0;
vrLen = 313;
vrLoc = 0;
};
B6614B050EFF5F280073C4E7 /* PBXTextBookmark */ = {
@ -380,9 +557,16 @@
modificationTime = 251949619.113812;
state = 2;
};
B6B17F350F1024010060F7AA /* PBXTextBookmark */ = {
B6B17F820F103AA70060F7AA /* fuse_common.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = fuse_common.h;
path = /usr/local/include/fuse/fuse_common.h;
sourceTree = "<absolute>";
};
B6B17F940F1136550060F7AA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B6B767F10F0FFEE300D819C9 /* fuse_common.h */;
fRef = B6B17F820F103AA70060F7AA /* fuse_common.h */;
name = "fuse_common.h: 36";
rLen = 0;
rLoc = 921;
@ -390,9 +574,9 @@
vrLen = 579;
vrLoc = 535;
};
B6B17F490F1027CE0060F7AA /* PBXTextBookmark */ = {
B6B17F950F1136550060F7AA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B6B767F10F0FFEE300D819C9 /* fuse_common.h */;
fRef = B6B17F820F103AA70060F7AA /* fuse_common.h */;
name = "fuse_common.h: 36";
rLen = 0;
rLoc = 921;
@ -400,6 +584,72 @@
vrLen = 579;
vrLoc = 535;
};
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}, {1353, 796}}";
sepNavSelRange = "{150, 0}";
sepNavVisRange = "{0, 683}";
sepNavWindowFrame = "{{299, 31}, {1412, 924}}";
};
};
B6B17FA50F1140160060F7AA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
name = "Disk.cpp: 326";
rLen = 0;
rLoc = 7418;
rType = 0;
vrLen = 325;
vrLoc = 28;
};
B6B17FA60F1140160060F7AA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B6B17FA00F1138830060F7AA /* DiskCopy42.h */;
name = "DiskCopy42.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 374;
vrLoc = 0;
};
B6B17FA70F1140160060F7AA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E91540EFB51FE000E4348 /* Disk.cpp */;
name = "Disk.cpp: 326";
rLen = 0;
rLoc = 7418;
rType = 0;
vrLen = 325;
vrLoc = 28;
};
B6B17FA80F1140160060F7AA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B6B17FA00F1138830060F7AA /* DiskCopy42.h */;
name = "DiskCopy42.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 374;
vrLoc = 0;
};
B6B17FB90F1140DC0060F7AA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60E914E0EFB3628000E4348 /* File.cpp */;
name = "File.cpp: 175";
rLen = 0;
rLoc = 3668;
rType = 0;
vrLen = 532;
vrLoc = 1288;
};
B6B767C80F0FFA3900D819C9 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B6DBB4E70F0C6BBD00F385F2 /* profuse.1 */;
@ -410,21 +660,6 @@
vrLen = 722;
vrLoc = 2400;
};
B6B767C90F0FFA3900D819C9 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
comments = "error: #error Please add -D_FILE_OFFSET_BITS=64 to your compile flags!";
fRef = B6B767CA0F0FFA3900D819C9 /* fuse_common.h */;
rLen = 1;
rLoc = 31;
rType = 1;
};
B6B767CA0F0FFA3900D819C9 /* fuse_common.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = fuse_common.h;
path = /usr/local/include/fuse/fuse_common.h;
sourceTree = "<absolute>";
};
B6B767CB0F0FFA3900D819C9 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B6DBB4E70F0C6BBD00F385F2 /* profuse.1 */;
@ -435,28 +670,6 @@
vrLen = 722;
vrLoc = 2400;
};
B6B767F00F0FFEE300D819C9 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B6B767F10F0FFEE300D819C9 /* fuse_common.h */;
name = "fuse_common.h: 36";
rLen = 0;
rLoc = 921;
rType = 0;
vrLen = 579;
vrLoc = 535;
};
B6B767F10F0FFEE300D819C9 /* fuse_common.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = fuse_common.h;
path = /usr/local/include/fuse/fuse_common.h;
sourceTree = "<absolute>";
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {883, 4214}}";
sepNavSelRange = "{921, 0}";
sepNavVisRange = "{535, 579}";
};
};
B6D81E5B0EFDE859000219B7 /* xmain.cpp:163 */ = {
isa = PBXFileBreakpoint;
actions = (

View File

@ -9,7 +9,9 @@
/* 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 */; };
B679E4A80F02E79300FB3F0C /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B679E4A70F02E79300FB3F0C /* main.cpp */; };
B6B17FA20F1138830060F7AA /* DiskCopy42.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6B17FA10F1138830060F7AA /* DiskCopy42.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@ -31,7 +33,11 @@
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>"; };
B679E4A70F02E79300FB3F0C /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; 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>"; };
B6DBB4E70F0C6BBD00F385F2 /* profuse.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = profuse.1; sourceTree = "<group>"; };
/* End PBXFileReference section */
@ -60,12 +66,16 @@
08FB7795FE84155DC02AAC07 /* Source */ = {
isa = PBXGroup;
children = (
B642F1290F132FA3001F7696 /* UniversalDiskImage.h */,
B642F12A0F132FA3001F7696 /* UniversalDiskImage.cpp */,
B60E91580EFD77E3000E4348 /* common.h */,
B60E91530EFB51FE000E4348 /* Disk.h */,
B60E91540EFB51FE000E4348 /* Disk.cpp */,
B60E914D0EFB3627000E4348 /* File.h */,
B60E914E0EFB3628000E4348 /* File.cpp */,
B679E4A70F02E79300FB3F0C /* main.cpp */,
B6B17FA00F1138830060F7AA /* DiskCopy42.h */,
B6B17FA10F1138830060F7AA /* DiskCopy42.cpp */,
);
name = Source;
sourceTree = "<group>";
@ -139,6 +149,8 @@
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 */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -257,7 +269,7 @@
B6B767C10F0FF90400D819C9 /* Debug Universal 10.4 */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = "";