diff options
Diffstat (limited to 'system/hfsprogs/patches/0002-Add-exclude-Darwin-specific-code.patch')
-rw-r--r-- | system/hfsprogs/patches/0002-Add-exclude-Darwin-specific-code.patch | 1408 |
1 files changed, 1408 insertions, 0 deletions
diff --git a/system/hfsprogs/patches/0002-Add-exclude-Darwin-specific-code.patch b/system/hfsprogs/patches/0002-Add-exclude-Darwin-specific-code.patch new file mode 100644 index 0000000000000..a6dc6b54c834f --- /dev/null +++ b/system/hfsprogs/patches/0002-Add-exclude-Darwin-specific-code.patch @@ -0,0 +1,1408 @@ +From: =?UTF-8?q?Rog=C3=A9rio=20Brito?= <rbrito@ime.usp.br> +Date: Thu, 24 Oct 2013 01:11:21 -0200 +Subject: Add/exclude Darwin-specific code + +Modify some of the files so that they can be compiled without the +Apple owned frameworks in a Debian system (and possibly others). +--- + fsck_hfs.tproj/cache.c | 4 ++ + fsck_hfs.tproj/dfalib/BTree.c | 2 + + fsck_hfs.tproj/dfalib/BlockCache.c | 3 + + fsck_hfs.tproj/dfalib/SBTree.c | 2 + + fsck_hfs.tproj/dfalib/SDevice.c | 92 ++++++++++++++++++++--------- + fsck_hfs.tproj/dfalib/SKeyCompare.c | 2 + + fsck_hfs.tproj/dfalib/SRepair.c | 2 + + fsck_hfs.tproj/dfalib/SRuntime.h | 7 ++- + fsck_hfs.tproj/dfalib/SUtils.c | 5 +- + fsck_hfs.tproj/dfalib/SVerify2.c | 7 +++ + fsck_hfs.tproj/dfalib/Scavenger.h | 11 +++- + fsck_hfs.tproj/dfalib/hfs_endian.c | 4 ++ + fsck_hfs.tproj/dfalib/hfs_endian.h | 7 ++- + fsck_hfs.tproj/fsck_hfs.c | 61 +++++++++++++++---- + fsck_hfs.tproj/utilities.c | 8 ++- + include/missing.h | 115 ++++++++++++++++++++++++++++++++++++ + newfs_hfs.tproj/hfs_endian.c | 5 ++ + newfs_hfs.tproj/hfs_endian.h | 5 ++ + newfs_hfs.tproj/makehfs.c | 72 ++++++++++++++++------ + newfs_hfs.tproj/newfs_hfs.c | 74 ++++++++++++++++++++--- + newfs_hfs.tproj/newfs_hfs.h | 26 ++++---- + 21 files changed, 429 insertions(+), 85 deletions(-) + create mode 100644 include/missing.h + +diff --git a/fsck_hfs.tproj/cache.c b/fsck_hfs.tproj/cache.c +index be46195..527088a 100644 +--- a/fsck_hfs.tproj/cache.c ++++ b/fsck_hfs.tproj/cache.c +@@ -26,7 +26,11 @@ + #include <stdlib.h> + #include <sys/mman.h> + #include <sys/stat.h> ++#if LINUX ++#include "missing.h" ++#else + #include <sys/types.h> ++#endif /* __LINUX__ */ + #include <sys/uio.h> + #include <unistd.h> + #include <string.h> +diff --git a/fsck_hfs.tproj/dfalib/BTree.c b/fsck_hfs.tproj/dfalib/BTree.c +index edd8301..7ad9fe0 100644 +--- a/fsck_hfs.tproj/dfalib/BTree.c ++++ b/fsck_hfs.tproj/dfalib/BTree.c +@@ -1705,7 +1705,9 @@ OSStatus BTGetInformation (SFCB *filePtr, + UInt16 version, + BTreeInfoRec *info ) + { ++#if !LINUX + #pragma unused (version) ++#endif + + BTreeControlBlockPtr btreePtr; + +diff --git a/fsck_hfs.tproj/dfalib/BlockCache.c b/fsck_hfs.tproj/dfalib/BlockCache.c +index 1bb952f..e3a28a2 100644 +--- a/fsck_hfs.tproj/dfalib/BlockCache.c ++++ b/fsck_hfs.tproj/dfalib/BlockCache.c +@@ -20,6 +20,9 @@ + * @APPLE_LICENSE_HEADER_END@ + */ + ++#if LINUX ++#include "missing.h" ++#endif + #include "SRuntime.h" + #include "Scavenger.h" + #include "../cache.h" +diff --git a/fsck_hfs.tproj/dfalib/SBTree.c b/fsck_hfs.tproj/dfalib/SBTree.c +index 2fbcd1d..cd81b13 100644 +--- a/fsck_hfs.tproj/dfalib/SBTree.c ++++ b/fsck_hfs.tproj/dfalib/SBTree.c +@@ -322,7 +322,9 @@ ErrorExit: + OSStatus + SetEndOfForkProc ( SFCB *filePtr, FSSize minEOF, FSSize maxEOF ) + { ++#if !LINUX + #pragma unused (maxEOF) ++#endif + + OSStatus result; + UInt32 actualSectorsAdded; +diff --git a/fsck_hfs.tproj/dfalib/SDevice.c b/fsck_hfs.tproj/dfalib/SDevice.c +index bf6f61c..9a46023 100644 +--- a/fsck_hfs.tproj/dfalib/SDevice.c ++++ b/fsck_hfs.tproj/dfalib/SDevice.c +@@ -2,7 +2,7 @@ + * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ +- * ++ * + * "Portions Copyright (c) 1999 Apple Computer, Inc. All Rights + * Reserved. This file contains Original Code and/or Modifications of + * Original Code as defined in and that are subject to the Apple Public +@@ -10,7 +10,7 @@ + * except in compliance with the License. Please obtain a copy of the + * License at http://www.apple.com/publicsource and read it before using + * this file. +- * ++ * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, +@@ -18,7 +18,7 @@ + * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the + * License for the specific language governing rights and limitations + * under the License." +- * ++ * + * @APPLE_LICENSE_HEADER_END@ + */ + #include "SRuntime.h" +@@ -28,33 +28,71 @@ + #include <unistd.h> + #include <errno.h> + #include <sys/ioctl.h> +- ++#if LINUX ++#include <fcntl.h> ++#include <sys/stat.h> ++#else + #include <IOKit/storage/IOMediaBSDClient.h> +- ++#endif /* LINUX */ + #else +- + #include <Files.h> + #include <Device.h> + #include <Disks.h> + + #endif + +- + OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize) + { + #if BSD + UInt64 devBlockCount = 0; + int devBlockSize = 0; ++#if LINUX ++ struct stat stbuf; ++ ++ devBlockSize = 512; + ++#ifndef BLKGETSIZE ++#define BLKGETSIZE _IO(0x12,96) ++#endif ++#ifndef BLKGETSIZE64 ++#define BLKGETSIZE64 _IOR(0x12,114,size_t) ++#endif ++ if (fstat(driveRefNum, &stbuf) < 0){ ++ printf("Error: %s\n", strerror(errno)); ++ return(-1); ++ } ++ ++ if (S_ISREG(stbuf.st_mode)) { ++ devBlockCount = stbuf.st_size / 512; ++ } ++ else if (S_ISBLK(stbuf.st_mode)) { ++ unsigned long size; ++ u_int64_t size64; ++ if (!ioctl(driveRefNum, BLKGETSIZE64, &size64)) ++ devBlockCount = size64 / 512; ++ else if (!ioctl(driveRefNum, BLKGETSIZE, &size)) ++ devBlockCount = size; ++ else{ ++ printf("Error: %s\n", strerror(errno)); ++ return(-1); ++ } ++ ++ } ++ else{ ++ printf("Device is not a block device"); ++ return(-1); ++ } ++#elif BSD + if (ioctl(driveRefNum, DKIOCGETBLOCKCOUNT, &devBlockCount) < 0) { + printf("ioctl(DKIOCGETBLOCKCOUNT) for fd %d: %s\n", driveRefNum, strerror(errno)); + return (-1); + } +- ++ + if (ioctl(driveRefNum, DKIOCGETBLOCKSIZE, &devBlockSize) < 0) { + printf("ioctl(DKIOCGETBLOCKSIZE) for fd %d: %s\n", driveRefNum, strerror(errno)); + return (-1); + } ++#endif /* BSD */ + + if (devBlockSize != 512) { + *numBlocks = (devBlockCount * (UInt64)devBlockSize) / 512; +@@ -70,24 +108,24 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize) + { + /* return format list status code */ + kFmtLstCode = 6, +- ++ + /* reference number of .SONY driver */ + kSonyRefNum = 0xfffb, +- ++ + /* values returned by DriveStatus in DrvSts.twoSideFmt */ + kSingleSided = 0, + kDoubleSided = -1, + kSingleSidedSize = 800, /* 400K */ + kDoubleSidedSize = 1600, /* 800K */ +- ++ + /* values in DrvQEl.qType */ + kWordDrvSiz = 0, + kLongDrvSiz = 1, +- ++ + /* more than enough formatListRecords */ + kMaxFormatListRecs = 16 + }; +- ++ + ParamBlockRec pb; + FormatListRec formatListRecords[kMaxFormatListRecs]; + DrvSts status; +@@ -95,22 +133,22 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize) + OSErr result; + unsigned long blocks = 0; + +- ++ + /* Attempt to get the drive's format list. */ + /* (see the Technical Note "What Your Sony Drives For You") */ +- ++ + pb.cntrlParam.ioVRefNum = driveQElementPtr->dQDrive; + pb.cntrlParam.ioCRefNum = driveQElementPtr->dQRefNum; + pb.cntrlParam.csCode = kFmtLstCode; + pb.cntrlParam.csParam[0] = kMaxFormatListRecs; + *(long *)&pb.cntrlParam.csParam[1] = (long)&formatListRecords[0]; +- ++ + result = PBStatusSync(&pb); +- ++ + if ( result == noErr ) + { + /* The drive supports ReturnFormatList status call. */ +- ++ + /* Get the current disk's size. */ + for( formatListRecIndex = 0; + formatListRecIndex < pb.cntrlParam.csParam[0]; +@@ -131,7 +169,7 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize) + else if ( driveQElementPtr->dQRefNum == (short)kSonyRefNum ) + { + /* The drive is a non-SuperDrive floppy which only supports 400K and 800K disks */ +- ++ + result = DriveStatus(driveQElementPtr->dQDrive, &status); + if ( result == noErr ) + { +@@ -140,11 +178,11 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize) + case kSingleSided: + blocks = kSingleSidedSize; + break; +- ++ + case kDoubleSided: + blocks = kDoubleSidedSize; + break; +- ++ + default: // This should never happen + result = paramErr; + break; +@@ -155,20 +193,20 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize) + { + /* The drive is not a floppy and it doesn't support ReturnFormatList */ + /* so use the dQDrvSz field(s) */ +- ++ + result = noErr; /* reset result */ +- ++ + switch ( driveQElementPtr->qType ) + { + case kWordDrvSiz: + blocks = driveQElementPtr->dQDrvSz; + break; +- ++ + case kLongDrvSiz: + blocks = ((unsigned long)driveQElementPtr->dQDrvSz2 << 16) + + driveQElementPtr->dQDrvSz; + break; +- ++ + default: // This should never happen + result = paramErr; + break; +@@ -177,7 +215,7 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize) + + *numBlocks = blocks; + *blockSize = 512; +- ++ + return( result ); + #endif + } +@@ -188,7 +226,7 @@ OSErr DeviceRead(int device, int drive, void* buffer, SInt64 offset, UInt32 reqB + #if BSD + off_t seek_off; + ssize_t nbytes; +- ++ + *actBytes = 0; + + seek_off = lseek(device, offset, SEEK_SET); +diff --git a/fsck_hfs.tproj/dfalib/SKeyCompare.c b/fsck_hfs.tproj/dfalib/SKeyCompare.c +index 46e145f..18d99c5 100644 +--- a/fsck_hfs.tproj/dfalib/SKeyCompare.c ++++ b/fsck_hfs.tproj/dfalib/SKeyCompare.c +@@ -454,7 +454,9 @@ SInt32 CompareExtentKeysPlus( const HFSPlusExtentKey *searchKey, const HFSPlusEx + * The name portion of the key is compared using a 16-bit binary comparison. + * This is called from the b-tree code. + */ ++#if !LINUX + __private_extern__ ++#endif + SInt32 + CompareAttributeKeys(const AttributeKey *searchKey, const AttributeKey *trialKey) + { +diff --git a/fsck_hfs.tproj/dfalib/SRepair.c b/fsck_hfs.tproj/dfalib/SRepair.c +index 01c1a10..8eb759c 100644 +--- a/fsck_hfs.tproj/dfalib/SRepair.c ++++ b/fsck_hfs.tproj/dfalib/SRepair.c +@@ -1617,7 +1617,9 @@ Output: + + static OSErr FixWrapperExtents( SGlobPtr GPtr, RepairOrderPtr p ) + { ++#if !LINUX + #pragma unused (p) ++#endif + + OSErr err; + HFSMasterDirectoryBlock *mdb; +diff --git a/fsck_hfs.tproj/dfalib/SRuntime.h b/fsck_hfs.tproj/dfalib/SRuntime.h +index 646917b..770e3ef 100644 +--- a/fsck_hfs.tproj/dfalib/SRuntime.h ++++ b/fsck_hfs.tproj/dfalib/SRuntime.h +@@ -27,8 +27,11 @@ + #define __SRUNTIME__ + + #if BSD +- ++#if LINUX ++#include "missing.h" ++#else + #include <sys/types.h> ++#endif + #include <stdlib.h> + #include <string.h> + #include <stdio.h> +@@ -91,10 +94,12 @@ typedef const unsigned char * ConstStr255Param; + + typedef u_int32_t HFSCatalogNodeID; + ++#if !LINUX + enum { + false = 0, + true = 1 + }; ++#endif + + /* OS error codes */ + enum { +diff --git a/fsck_hfs.tproj/dfalib/SUtils.c b/fsck_hfs.tproj/dfalib/SUtils.c +index 72035f0..6e9253e 100644 +--- a/fsck_hfs.tproj/dfalib/SUtils.c ++++ b/fsck_hfs.tproj/dfalib/SUtils.c +@@ -380,7 +380,8 @@ void InvalidateCalculatedVolumeBitMap( SGlobPtr GPtr ) + // GPtr->realVCB Real in-memory vcb + //------------------------------------------------------------------------------ + +-#if !BSD ++#if BSD ++#if !LINUX + OSErr GetVolumeFeatures( SGlobPtr GPtr ) + { + OSErr err; +@@ -418,7 +419,7 @@ OSErr GetVolumeFeatures( SGlobPtr GPtr ) + return( noErr ); + } + #endif +- ++#endif + + + /*------------------------------------------------------------------------------- +diff --git a/fsck_hfs.tproj/dfalib/SVerify2.c b/fsck_hfs.tproj/dfalib/SVerify2.c +index 6a47935..c68f3d8 100644 +--- a/fsck_hfs.tproj/dfalib/SVerify2.c ++++ b/fsck_hfs.tproj/dfalib/SVerify2.c +@@ -32,7 +32,9 @@ + */ + + #include <sys/ioctl.h> ++#if !LINUX + #include <sys/disk.h> ++#endif + + #include "BTree.h" + #include "BTreePrivate.h" +@@ -1354,8 +1356,13 @@ OSErr CompareVolumeHeader( SGlobPtr GPtr, HFSPlusVolumeHeader *volumeHeader ) + * clump size for read-only media is irrelevant we skip the clump size + * check to avoid non useful warnings. + */ ++#if LINUX ++ // FIXME ++ isWriteable = 1; ++#else + isWriteable = 0; + ioctl( GPtr->DrvNum, DKIOCISWRITABLE, &isWriteable ); ++#endif + if ( isWriteable != 0 && + volumeHeader->catalogFile.clumpSize != vcb->vcbCatalogFile->fcbClumpSize ) { + PrintError(GPtr, E_InvalidClumpSize, 0); +diff --git a/fsck_hfs.tproj/dfalib/Scavenger.h b/fsck_hfs.tproj/dfalib/Scavenger.h +index cf53970..edb3a80 100644 +--- a/fsck_hfs.tproj/dfalib/Scavenger.h ++++ b/fsck_hfs.tproj/dfalib/Scavenger.h +@@ -37,11 +37,16 @@ + #include "../fsck_debug.h" + + #include <assert.h> ++#if LINUX ++#define XATTR_MAXNAMELEN 127 ++#include <limits.h> ++#else + #include <sys/xattr.h> + #include <sys/acl.h> + #include <sys/kauth.h> +-#include <sys/errno.h> + #include <sys/syslimits.h> ++#endif ++#include <sys/errno.h> + + #ifdef __cplusplus + extern "C" { +@@ -1465,4 +1470,8 @@ extern int AllocateContigBitmapBits (SVCB *vcb, UInt32 numBlocks, UInt32 *actua + }; + #endif + ++/* #if LINUX ++#undef XATTR_MAXNAMELEN ++#endif */ ++ + #endif /* __SCAVENGER__ */ +diff --git a/fsck_hfs.tproj/dfalib/hfs_endian.c b/fsck_hfs.tproj/dfalib/hfs_endian.c +index 7fa5385..69500c1 100755 +--- a/fsck_hfs.tproj/dfalib/hfs_endian.c ++++ b/fsck_hfs.tproj/dfalib/hfs_endian.c +@@ -31,7 +31,11 @@ + #include <sys/types.h> + #include <sys/stat.h> + ++#if LINUX ++#include "missing.h" ++#else + #include <architecture/byte_order.h> ++#endif + #include <hfs/hfs_format.h> + + #include "Scavenger.h" +diff --git a/fsck_hfs.tproj/dfalib/hfs_endian.h b/fsck_hfs.tproj/dfalib/hfs_endian.h +index 52d0c3a..0763d9d 100755 +--- a/fsck_hfs.tproj/dfalib/hfs_endian.h ++++ b/fsck_hfs.tproj/dfalib/hfs_endian.h +@@ -27,9 +27,14 @@ + * + * This file prototypes endian swapping routines for the HFS/HFS Plus + * volume format. +- */ ++*/ + #include <hfs/hfs_format.h> ++#if LINUX ++#include <endian.h> ++#include <byteswap.h> ++#else + #include <architecture/byte_order.h> ++#endif + #include "SRuntime.h" + + /*********************/ +diff --git a/fsck_hfs.tproj/fsck_hfs.c b/fsck_hfs.tproj/fsck_hfs.c +index 90532fd..f1a18bd 100644 +--- a/fsck_hfs.tproj/fsck_hfs.c ++++ b/fsck_hfs.tproj/fsck_hfs.c +@@ -24,10 +24,14 @@ + #include <sys/types.h> + #include <sys/stat.h> + #include <sys/param.h> ++#if !LINUX + #include <sys/ucred.h> ++#endif + #include <sys/mount.h> + #include <sys/ioctl.h> ++#if !LINUX + #include <sys/disk.h> ++#endif + + #include <hfs/hfs_mount.h> + +@@ -195,8 +199,12 @@ main(argc, argv) + if (guiControl) + debug = 0; /* debugging is for command line only */ + ++#if LINUX ++// FIXME ++#else + if (signal(SIGINT, SIG_IGN) != SIG_IGN) + (void)signal(SIGINT, catch); ++#endif + + if (argc < 1) { + (void) fprintf(stderr, "%s: missing special-device\n", progname); +@@ -218,7 +226,9 @@ checkfilesys(char * filesys) + int chkLev, repLev, logLev; + int blockDevice_fd, canWrite; + char *unraw, *mntonname; ++#if !LINUX + struct statfs *fsinfo; ++#endif + int fs_fd=-1; // fd to the root-dir of the fs we're checking (only w/lfag == 1) + + flags = 0; +@@ -227,7 +237,9 @@ checkfilesys(char * filesys) + canWrite = 0; + unraw = NULL; + mntonname = NULL; +- ++#if LINUX ++ // FIXME ++#else + if (lflag) { + result = getmntinfo(&fsinfo, MNT_NOWAIT); + +@@ -257,10 +269,10 @@ checkfilesys(char * filesys) + } + } + } +- ++#endif + if (debug && preen) + pwarn("starting\n"); +- ++ + if (setup( filesys, &blockDevice_fd, &canWrite ) == 0) { + if (preen) + pfatal("CAN'T CHECK FILE SYSTEM."); +@@ -278,7 +290,7 @@ checkfilesys(char * filesys) + repLev = kMajorRepairs; + logLev = kVerboseLog; + +- if (yflag) ++ if (yflag) + repLev = kMajorRepairs; + + if (quick) { +@@ -298,16 +310,16 @@ checkfilesys(char * filesys) + + if (nflag) + repLev = kNeverRepair; +- ++ + if ( rebuildCatalogBtree ) { + chkLev = kPartialCheck; + repLev = kForceRepairs; // this will force rebuild of catalog B-Tree file + } +- ++ + /* + * go check HFS volume... + */ +- result = CheckHFS( fsreadfd, fswritefd, chkLev, repLev, logLev, ++ result = CheckHFS( fsreadfd, fswritefd, chkLev, repLev, logLev, + guiControl, lostAndFoundMode, canWrite, &fsmodified ); + if (!hotroot) { + ckfini(1); +@@ -330,6 +342,9 @@ checkfilesys(char * filesys) + } + } + } else { ++#if LINUX ++ // FIXME ++#else + struct statfs stfs_buf; + /* + * Check to see if root is mounted read-write. +@@ -339,19 +354,25 @@ checkfilesys(char * filesys) + else + flags = 0; + ckfini(flags & MNT_RDONLY); ++#endif + } + + /* XXX free any allocated memory here */ + + if (hotroot && fsmodified) { ++#if !LINUX + struct hfs_mount_args args; ++#endif + /* + * We modified the root. Do a mount update on + * it, unless it is read-write, so we can continue. + */ + if (!preen) + printf("\n***** FILE SYSTEM WAS MODIFIED *****\n"); +- if (flags & MNT_RDONLY) { ++#if LINUX ++ // FIXME ++#else ++ if (flags & MNT_RDONLY) { + bzero(&args, sizeof(args)); + flags |= MNT_UPDATE | MNT_RELOAD; + if (mount("hfs", "/", flags, &args) == 0) { +@@ -359,6 +380,7 @@ checkfilesys(char * filesys) + goto ExitThisRoutine; + } + } ++#endif + if (!preen) + printf("\n***** REBOOT NOW *****\n"); + sync(); +@@ -367,7 +389,7 @@ checkfilesys(char * filesys) + } + + result = (result == 0) ? 0 : EEXIT; +- ++ + ExitThisRoutine: + if (lflag) { + fcntl(fs_fd, F_THAW_FS, NULL); +@@ -401,16 +423,18 @@ setup( char *dev, int *blockDevice_fdPtr, int *canWritePtr ) + fswritefd = -1; + *blockDevice_fdPtr = -1; + *canWritePtr = 0; +- ++ + if (stat(dev, &statb) < 0) { + printf("Can't stat %s: %s\n", dev, strerror(errno)); + return (0); + } ++#if !LINUX + if ((statb.st_mode & S_IFMT) != S_IFCHR) { + pfatal("%s is not a character device", dev); + if (reply("CONTINUE") == 0) + return (0); + } ++#endif + if ((fsreadfd = open(dev, O_RDONLY)) < 0) { + printf("Can't open %s: %s\n", dev, strerror(errno)); + return (0); +@@ -419,7 +443,7 @@ setup( char *dev, int *blockDevice_fdPtr, int *canWritePtr ) + /* attempt to get write access to the block device and if not check if volume is */ + /* mounted read-only. */ + getWriteAccess( dev, blockDevice_fdPtr, canWritePtr ); +- ++ + if (preen == 0 && !guiControl) + printf("** %s", dev); + if (nflag || (fswritefd = open(dev, O_WRONLY)) < 0) { +@@ -433,10 +457,14 @@ setup( char *dev, int *blockDevice_fdPtr, int *canWritePtr ) + printf("\n"); + + /* Get device block size to initialize cache */ ++#if LINUX ++ devBlockSize = 512; ++#else + if (ioctl(fsreadfd, DKIOCGETBLOCKSIZE, &devBlockSize) < 0) { + pfatal ("Can't get device block size\n"); + return (0); + } ++#endif + + /* calculate the cache block size and total blocks */ + if (CalculateCacheSize(userCacheSize, &cacheBlockSize, &cacheTotalBlocks, debug) != 0) { +@@ -463,11 +491,15 @@ setup( char *dev, int *blockDevice_fdPtr, int *canWritePtr ) + + static void getWriteAccess( char *dev, int *blockDevice_fdPtr, int *canWritePtr ) + { ++#if !LINUX + int i; + int myMountsCount; ++#endif + void * myPtr; + char * myCharPtr; ++#if !LINUX + struct statfs * myBufPtr; ++#endif + void * myNamePtr; + + myPtr = NULL; +@@ -490,6 +522,9 @@ static void getWriteAccess( char *dev, int *blockDevice_fdPtr, int *canWritePtr + } + + // get count of mounts then get the info for each ++#if LINUX ++ // FIXME ++#else + myMountsCount = getfsstat( NULL, 0, MNT_NOWAIT ); + if ( myMountsCount < 0 ) + goto ExitThisRoutine; +@@ -513,8 +548,8 @@ static void getWriteAccess( char *dev, int *blockDevice_fdPtr, int *canWritePtr + } + myBufPtr++; + } +- *canWritePtr = 1; // single user will get us here, f_mntfromname is not /dev/diskXXXX +- ++#endif ++ *canWritePtr = 1; // single user will get us here, f_mntfromname is not /dev/diskXXXX + ExitThisRoutine: + if ( myPtr != NULL ) + free( myPtr ); +diff --git a/fsck_hfs.tproj/utilities.c b/fsck_hfs.tproj/utilities.c +index ee41bef..8e1cd77 100644 +--- a/fsck_hfs.tproj/utilities.c ++++ b/fsck_hfs.tproj/utilities.c +@@ -183,12 +183,14 @@ retry: + printf("Can't stat %s\n", raw); + return (origname); + } ++#if !LINUX + if ((stchar.st_mode & S_IFMT) == S_IFCHR) { + return (raw); + } else { + printf("%s is not a character device\n", raw); + return (origname); + } ++#endif + } else if ((stblock.st_mode & S_IFMT) == S_IFCHR && !retried) { + newname = unrawname(newname); + retried++; +@@ -214,7 +216,11 @@ rawname(char *name) + *dp = 0; + (void)strcpy(rawbuf, name); + *dp = '/'; +- (void)strcat(rawbuf, "/r"); ++#if LINUX ++ (void)strcat(rawbuf, "/"); ++#else ++ (void)strcat(rawbuf,"/r"); ++#endif + (void)strcat(rawbuf, &dp[1]); + + return (rawbuf); +diff --git a/include/missing.h b/include/missing.h +new file mode 100644 +index 0000000..0a859c4 +--- /dev/null ++++ b/include/missing.h +@@ -0,0 +1,115 @@ ++#ifndef _MISSING_H_ ++#define _MISSING_H_ ++ ++#include <endian.h> ++#include <byteswap.h> ++#include <errno.h> ++#include <stdint.h> ++#include <string.h> ++#include <bsd/string.h> ++ ++#define MAXBSIZE (256 * 4096) ++ ++#ifndef true ++#define true 1 ++#endif ++#ifndef false ++#define false 0 ++#endif ++ ++/* Mac types */ ++ ++/* 8 Bit */ ++#ifndef UInt8 ++#define UInt8 uint8_t ++#endif ++#ifndef u_int8_t ++#define u_int8_t UInt8 ++#endif ++#ifndef SInt8 ++#define SInt8 int8_t ++#endif ++ ++/* 16 Bit */ ++#ifndef UInt16 ++#define UInt16 uint16_t ++#endif ++#ifndef u_int16_t ++#define u_int16_t UInt16 ++#endif ++#ifndef SInt16 ++#define SInt16 int16_t ++#endif ++ ++/* 32 Bit */ ++#ifndef UInt32 ++#define UInt32 uint32_t ++#endif ++#ifndef u_int32_t ++#define u_int32_t UInt32 ++#endif ++#ifndef SInt32 ++#define SInt32 int32_t ++#endif ++ ++/* 64 Bit */ ++#ifndef UInt64 ++#define UInt64 uint64_t ++#endif ++#ifndef u_int64_t ++#define u_int64_t UInt64 ++#endif ++#ifndef SInt64 ++#define SInt64 int64_t ++#endif ++ ++#define UniChar u_int16_t ++#define Boolean u_int8_t ++ ++#define UF_NODUMP 0x00000001 ++ ++/* syslimits.h */ ++#define NAME_MAX 255 ++ ++/* Byteswap stuff */ ++#define NXSwapHostLongToBig(x) cpu_to_be64(x) ++#define NXSwapBigShortToHost(x) be16_to_cpu(x) ++#define OSSwapBigToHostInt16(x) be16_to_cpu(x) ++#define NXSwapBigLongToHost(x) be32_to_cpu(x) ++#define OSSwapBigToHostInt32(x) be32_to_cpu(x) ++#define NXSwapBigLongLongToHost(x) be64_to_cpu(x) ++#define OSSwapBigToHostInt64(x) be64_to_cpu(x) ++ ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++/* Big Endian Swaps */ ++#ifndef be16_to_cpu ++#define be16_to_cpu(x) bswap_16(x) ++#endif ++#ifndef be32_to_cpu ++#define be32_to_cpu(x) bswap_32(x) ++#endif ++#ifndef be64_to_cpu ++#define be64_to_cpu(x) bswap_64(x) ++#endif ++#ifndef cpu_to_be64 ++#define cpu_to_be64(x) bswap_64(x) ++#endif ++#elif __BYTE_ORDER == __BIG_ENDIAN ++/* Big endian doesn't swap */ ++#ifndef be16_to_cpu ++#define be16_to_cpu(x) (x) ++#endif ++#ifndef be32_to_cpu ++#define be32_to_cpu(x) (x) ++#endif ++#ifndef be64_to_cpu ++#define be64_to_cpu(x) (x) ++#endif ++#ifndef cpu_to_be64 ++#define cpu_to_be64(x) (x) ++#endif ++#endif ++ ++#define KAUTH_FILESEC_XATTR "com.apple.system.Security" ++ ++#endif +diff --git a/newfs_hfs.tproj/hfs_endian.c b/newfs_hfs.tproj/hfs_endian.c +index 117b7f8..fdf7353 100644 +--- a/newfs_hfs.tproj/hfs_endian.c ++++ b/newfs_hfs.tproj/hfs_endian.c +@@ -30,7 +30,12 @@ + #include <sys/types.h> + #include <sys/stat.h> + ++#if LINUX ++#include "missing.h" ++#else + #include <architecture/byte_order.h> ++#endif ++ + #include <hfs/hfs_format.h> + + #include "hfs_endian.h" +diff --git a/newfs_hfs.tproj/hfs_endian.h b/newfs_hfs.tproj/hfs_endian.h +index 8d9d01d..5c7ff57 100644 +--- a/newfs_hfs.tproj/hfs_endian.h ++++ b/newfs_hfs.tproj/hfs_endian.h +@@ -29,7 +29,12 @@ + * volume format. + */ + #include <hfs/hfs_format.h> ++#if LINUX ++#include <endian.h> ++#include <byteswap.h> ++#else + #include <architecture/byte_order.h> ++#endif + + /*********************/ + /* BIG ENDIAN Macros */ +diff --git a/newfs_hfs.tproj/makehfs.c b/newfs_hfs.tproj/makehfs.c +index 085222f..7609779 100644 +--- a/newfs_hfs.tproj/makehfs.c ++++ b/newfs_hfs.tproj/makehfs.c +@@ -31,10 +31,16 @@ + #include <sys/param.h> + #include <sys/types.h> + #include <sys/time.h> ++#if LINUX ++#include <time.h> ++#include "missing.h" ++#endif + #include <sys/errno.h> + #include <sys/stat.h> + #include <sys/sysctl.h> ++#if !LINUX + #include <sys/vmmeter.h> ++#endif + + #include <err.h> + #include <errno.h> +@@ -47,13 +53,14 @@ + + #include <openssl/sha.h> + ++#if !LINUX + #include <architecture/byte_order.h> + + #include <CoreFoundation/CFString.h> + #include <CoreFoundation/CFStringEncodingExt.h> + + extern Boolean _CFStringGetFileSystemRepresentation(CFStringRef string, UInt8 *buffer, CFIndex maxBufLen); +- ++#endif + + #include <hfs/hfs_format.h> + #include <hfs/hfs_mount.h> +@@ -129,7 +136,9 @@ static UInt32 Largest __P((UInt32 a, UInt32 b, UInt32 c, UInt32 d )); + static void MarkBitInAllocationBuffer __P((HFSPlusVolumeHeader *header, + UInt32 allocationBlock, void* sectorBuffer, UInt32 *sector)); + ++#if !LINUX + static UInt32 GetDefaultEncoding(); ++#endif + + static UInt32 UTCToLocal __P((UInt32 utcTime)); + +@@ -158,11 +167,14 @@ void SETOFFSET (void *buffer, UInt16 btNodeSize, SInt16 recOffset, SInt16 vecOff + + #define ROUNDUP(x, u) (((x) % (u) == 0) ? (x) : ((x)/(u) + 1) * (u)) + +-#define ENCODING_TO_BIT(e) \ ++#if LINUX ++#define ENCODING_TO_BIT(e) (e) ++#else ++#define ENCODING_TO_BIT(e) + ((e) < 48 ? (e) : \ + ((e) == kCFStringEncodingMacUkrainian ? 48 : \ + ((e) == kCFStringEncodingMacFarsi ? 49 : 0))) +- ++#endif + /* + * make_hfs + * +@@ -528,6 +540,7 @@ InitMDB(hfsparams_t *defaults, UInt32 driveBlocks, HFS_MDB *mdbp) + * Map UTF-8 input into a Mac encoding. + * On conversion errors "untitled" is used as a fallback. + */ ++#if !LINUX + { + UniChar unibuf[kHFSMaxVolumeNameChars]; + CFStringRef cfstr; +@@ -553,7 +566,11 @@ InitMDB(hfsparams_t *defaults, UInt32 driveBlocks, HFS_MDB *mdbp) + bcopy(&mdbp->drVN[1], defaults->volumeName, mdbp->drVN[0]); + defaults->volumeName[mdbp->drVN[0]] = '\0'; + } ++#endif + /* Save the encoding hint in the Finder Info (field 4). */ ++ mdbp->drVN[0] = strlen(defaults->volumeName); ++ bcopy(defaults->volumeName,&mdbp->drVN[1],mdbp->drVN[0]); ++ + mdbp->drFndrInfo[4] = SET_HFS_TEXT_ENCODING(defaults->encodingHint); + + mdbp->drWrCnt = kWriteSeqNum; +@@ -1100,9 +1117,11 @@ InitCatalogRoot_HFSPlus(const hfsparams_t *dp, const HFSPlusVolumeHeader *header + UInt16 nodeSize; + SInt16 offset; + UInt32 unicodeBytes; ++#if !LINUX + UInt8 canonicalName[256]; + CFStringRef cfstr; + Boolean cfOK; ++#endif + int index = 0; + + nodeSize = dp->catalogNodeSize; +@@ -1122,7 +1141,9 @@ InitCatalogRoot_HFSPlus(const hfsparams_t *dp, const HFSPlusVolumeHeader *header + * First record is always the root directory... + */ + ckp = (HFSPlusCatalogKey *)((UInt8 *)buffer + offset); +- ++#if LINUX ++ ConvertUTF8toUnicode(dp->volumeName, sizeof(ckp->nodeName.unicode), ckp->nodeName.unicode, &ckp->nodeName.length); ++#else + /* Use CFString functions to get a HFSPlus Canonical name */ + cfstr = CFStringCreateWithCString(kCFAllocatorDefault, (char *)dp->volumeName, kCFStringEncodingUTF8); + cfOK = _CFStringGetFileSystemRepresentation(cfstr, canonicalName, sizeof(canonicalName)); +@@ -1139,6 +1160,7 @@ InitCatalogRoot_HFSPlus(const hfsparams_t *dp, const HFSPlusVolumeHeader *header + dp->volumeName, kDefaultVolumeNameStr); + } + CFRelease(cfstr); ++#endif + ckp->nodeName.length = SWAP_BE16 (ckp->nodeName.length); + + unicodeBytes = sizeof(UniChar) * SWAP_BE16 (ckp->nodeName.length); +@@ -1821,15 +1843,15 @@ WriteBuffer(const DriveInfo *driveInfo, UInt64 startingSector, UInt32 byteCount, + off_t sector; + + if ((byteCount % driveInfo->sectorSize) != 0) +- errx(1, "WriteBuffer: byte count %ld is not sector size multiple", byteCount); ++ errx(1, "WriteBuffer: byte count %i is not sector size multiple", byteCount); + + sector = driveInfo->sectorOffset + startingSector; + + if (lseek(driveInfo->fd, sector * driveInfo->sectorSize, SEEK_SET) < 0) +- err(1, "seek (sector %qd)", sector); ++ err(1, "seek (sector %lld)", sector); + + if (write(driveInfo->fd, buffer, byteCount) != byteCount) +- err(1, "write (sector %qd, %ld bytes)", sector, byteCount); ++ err(1, "write (sector %lld, %i bytes)", sector, byteCount); + } + + +@@ -1913,7 +1935,7 @@ DivideAndRoundUp(UInt32 numerator, UInt32 denominator) + return quotient; + } + +- ++#if !LINUX + #define __kCFUserEncodingFileName ("/.CFUserTextEncoding") + + static UInt32 +@@ -1939,7 +1961,7 @@ GetDefaultEncoding() + } + return 0; + } +- ++#endif + + static int + ConvertUTF8toUnicode(const UInt8* source, UInt32 bufsize, UniChar* unibuf, +@@ -2006,6 +2028,9 @@ ConvertUTF8toUnicode(const UInt8* source, UInt32 bufsize, UniChar* unibuf, + static int + getencodinghint(unsigned char *name) + { ++#if LINUX ++ return(0); ++#else + int mib[3]; + size_t buflen = sizeof(int); + struct vfsconf vfc; +@@ -2023,7 +2048,8 @@ getencodinghint(unsigned char *name) + return (hint); + error: + hint = GetDefaultEncoding(); +- return (hint); ++ return (0); ++#endif + } + + +@@ -2034,12 +2060,14 @@ void GenerateVolumeUUID(VolumeUUID *newVolumeID) { + unsigned char digest[20]; + time_t now; + clock_t uptime; +- int mib[2]; +- int sysdata; +- char sysctlstring[128]; + size_t datalen; + double sysloadavg[3]; ++#if !LINUX ++ int sysdata; ++ int mib[2]; ++ char sysctlstring[128]; + struct vmtotal sysvmtotal; ++#endif + + do { + /* Initialize the SHA-1 context for processing: */ +@@ -2052,52 +2080,58 @@ void GenerateVolumeUUID(VolumeUUID *newVolumeID) { + SHA1_Update(&context, &uptime, sizeof(uptime)); + + /* The kernel's boot time: */ ++#if !LINUX + mib[0] = CTL_KERN; + mib[1] = KERN_BOOTTIME; + datalen = sizeof(sysdata); + sysctl(mib, 2, &sysdata, &datalen, NULL, 0); + SHA1_Update(&context, &sysdata, datalen); +- ++#endif + /* The system's host id: */ ++#if !LINUX + mib[0] = CTL_KERN; + mib[1] = KERN_HOSTID; + datalen = sizeof(sysdata); + sysctl(mib, 2, &sysdata, &datalen, NULL, 0); + SHA1_Update(&context, &sysdata, datalen); +- ++#endif + /* The system's host name: */ ++#if !LINUX + mib[0] = CTL_KERN; + mib[1] = KERN_HOSTNAME; + datalen = sizeof(sysctlstring); + sysctl(mib, 2, sysctlstring, &datalen, NULL, 0); + SHA1_Update(&context, sysctlstring, datalen); +- ++#endif + /* The running kernel's OS release string: */ ++#if !LINUX + mib[0] = CTL_KERN; + mib[1] = KERN_OSRELEASE; + datalen = sizeof(sysctlstring); + sysctl(mib, 2, sysctlstring, &datalen, NULL, 0); + SHA1_Update(&context, sysctlstring, datalen); +- ++#endif + /* The running kernel's version string: */ ++#if !LINUX + mib[0] = CTL_KERN; + mib[1] = KERN_VERSION; + datalen = sizeof(sysctlstring); + sysctl(mib, 2, sysctlstring, &datalen, NULL, 0); + SHA1_Update(&context, sysctlstring, datalen); +- ++#endif + /* The system's load average: */ + datalen = sizeof(sysloadavg); + getloadavg(sysloadavg, 3); + SHA1_Update(&context, &sysloadavg, datalen); + + /* The system's VM statistics: */ ++#if !LINUX + mib[0] = CTL_VM; + mib[1] = VM_METER; + datalen = sizeof(sysvmtotal); + sysctl(mib, 2, &sysvmtotal, &datalen, NULL, 0); + SHA1_Update(&context, &sysvmtotal, datalen); +- ++#endif + /* The current GMT (26 ASCII characters): */ + time(&now); + strncpy(randomInputBuffer, asctime(gmtime(&now)), 26); /* "Mon Mar 27 13:46:26 2000" */ +diff --git a/newfs_hfs.tproj/newfs_hfs.c b/newfs_hfs.tproj/newfs_hfs.c +index c4176a9..bf2ed21 100644 +--- a/newfs_hfs.tproj/newfs_hfs.c ++++ b/newfs_hfs.tproj/newfs_hfs.c +@@ -38,8 +38,13 @@ + #include <sys/mount.h> + #include <sys/param.h> + #include <sys/stat.h> ++#if LINUX ++#include <time.h> ++#endif + ++#if !LINUX + #include <IOKit/storage/IOMediaBSDClient.h> ++#endif + + #include <hfs/hfs_format.h> + #include "newfs_hfs.h" +@@ -73,7 +78,9 @@ static void usage __P((void)); + + char *progname; + char gVolumeName[kHFSPlusMaxFileNameChars + 1] = {kDefaultVolumeNameStr}; ++#if !LINUX + char rawdevice[MAXPATHLEN]; ++#endif + char blkdevice[MAXPATHLEN]; + UInt32 gBlockSize = 0; + UInt32 gNextCNID = kHFSFirstUserCatalogNodeID; +@@ -158,8 +165,10 @@ main(argc, argv) + extern int optind; + int ch; + int forceHFS; ++#if !LINUX + char *cp, *special; + struct statfs *mp; ++#endif + int n; + + if ((progname = strrchr(*argv, '/'))) +@@ -260,16 +269,19 @@ main(argc, argv) + usage(); + } + +- argc -= optind; +- argv += optind; ++ argc -= optind; ++ argv += optind; + +- if (gPartitionSize != 0) { +- if (argc != 0) +- usage(); +- } else { +- if (argc != 1) +- usage(); ++ if (gPartitionSize != 0) { ++ if (argc != 0) ++ usage(); ++ } else { ++ if (argc != 1) ++ usage(); + ++#if LINUX ++ (void) sprintf(blkdevice, "%s", argv[0]); ++#else + special = argv[0]; + cp = strrchr(special, '/'); + if (cp != 0) +@@ -278,6 +290,7 @@ main(argc, argv) + special++; + (void) sprintf(rawdevice, "%sr%s", _PATH_DEV, special); + (void) sprintf(blkdevice, "%s%s", _PATH_DEV, special); ++#endif + } + + if (forceHFS && gJournaled) { +@@ -301,6 +314,9 @@ main(argc, argv) + /* + * Check if target device is aready mounted + */ ++#if LINUX ++ // FIXME ++#else + n = getmntinfo(&mp, MNT_NOWAIT); + if (n == 0) + fatal("%s: getmntinfo: %s", blkdevice, strerror(errno)); +@@ -310,15 +326,20 @@ main(argc, argv) + fatal("%s is mounted on %s", blkdevice, mp->f_mntonname); + ++mp; + } ++#endif + } + +- if (hfs_newfs(rawdevice, forceHFS, true) < 0) { ++ if (hfs_newfs(blkdevice, forceHFS, true) < 0) { ++#if LINUX ++ err(1, NULL); ++#else + /* On ENXIO error use the block device (to get de-blocking) */ + if (errno == ENXIO) { + if (hfs_newfs(blkdevice, forceHFS, false) < 0) + err(1, NULL); + } else + err(1, NULL); ++#endif + } + + exit(0); +@@ -506,7 +527,9 @@ hfs_newfs(char *device, int forceHFS, int isRaw) + int fso = 0; + int retval = 0; + hfsparams_t defaults = {0}; ++#if !LINUX + u_int64_t maxSectorsPerIO; ++#endif + + if (gPartitionSize) { + dip.sectorSize = kBytesPerSector; +@@ -526,6 +549,34 @@ hfs_newfs(char *device, int forceHFS, int isRaw) + + if (fstat( fso, &stbuf) < 0) + fatal("%s: %s", device, strerror(errno)); ++#if LINUX ++ dip.sectorSize = 512; ++ dip.sectorsPerIO = 256; ++ ++# ifndef BLKGETSIZE ++# define BLKGETSIZE _IO(0x12,96) ++# endif ++ ++# ifndef BLKGETSIZE64 ++# define BLKGETSIZE64 _IOR(0x12,114,size_t) ++# endif ++ ++ if (S_ISREG(stbuf.st_mode)) { ++ dip.totalSectors = stbuf.st_size / 512; ++ } ++ else if (S_ISBLK(stbuf.st_mode)) { ++ unsigned long size; ++ u_int64_t size64; ++ if (!ioctl(fso, BLKGETSIZE64, &size64)) ++ dip.totalSectors = size64 / 512; ++ else if (!ioctl(fso, BLKGETSIZE, &size)) ++ dip.totalSectors = size; ++ else ++ fatal("%s: %s", device, strerror(errno)); ++ } ++ else ++ fatal("%s: is not a block device", device); ++#else + + if (ioctl(fso, DKIOCGETBLOCKCOUNT, &dip.totalSectors) < 0) + fatal("%s: %s", device, strerror(errno)); +@@ -537,11 +588,14 @@ hfs_newfs(char *device, int forceHFS, int isRaw) + dip.sectorsPerIO = (128 * 1024) / dip.sectorSize; /* use 128K as default */ + else + dip.sectorsPerIO = MIN(maxSectorsPerIO, (1024 * 1024) / dip.sectorSize); ++#endif ++ + /* + * The make_hfs code currentlydoes 512 byte sized I/O. + * If the sector size is bigger than 512, start over + * using the block device (to get de-blocking). + */ ++#if !LINUX + if (dip.sectorSize != kBytesPerSector) { + if (isRaw) { + close(fso); +@@ -556,7 +610,9 @@ hfs_newfs(char *device, int forceHFS, int isRaw) + dip.sectorSize = kBytesPerSector; + } + } ++#endif + } ++ + dip.sectorOffset = 0; + time(&createtime); + +diff --git a/newfs_hfs.tproj/newfs_hfs.h b/newfs_hfs.tproj/newfs_hfs.h +index 968ff10..5680a34 100644 +--- a/newfs_hfs.tproj/newfs_hfs.h ++++ b/newfs_hfs.tproj/newfs_hfs.h +@@ -19,8 +19,12 @@ + * + * @APPLE_LICENSE_HEADER_END@ + */ +- ++ ++#if LINUX ++#include "missing.h" ++#else + #include <CoreFoundation/CFBase.h> ++#endif + + /* + * Mac OS Finder flags +@@ -122,33 +126,33 @@ enum { + #define kDTDF_FileID 16 + #define kDTDF_Name "Desktop DF" + #define kDTDF_Chars 10 +-#define kDTDF_Type 'DTFL' +-#define kDTDF_Creator 'DMGR' ++#define kDTDF_Type 0x4454464C /* 'DTFL' */ ++#define kDTDF_Creator 0x444D4752 /* 'DMGR' */ + + #define kDTDB_FileID 17 + #define kDTDB_Name "Desktop DB" + #define kDTDB_Chars 10 +-#define kDTDB_Type 'BTFL' +-#define kDTDB_Creator 'DMGR' ++#define kDTDB_Type 0x4254464C /* 'BTFL' */ ++#define kDTDB_Creator 0x444D4752 /* 'DMGR' */ + #define kDTDB_Size 1024 + + #define kReadMe_FileID 18 + #define kReadMe_Name "ReadMe" + #define kReadMe_Chars 6 +-#define kReadMe_Type 'ttro' +-#define kReadMe_Creator 'ttxt' ++#define kReadMe_Type 0x7474726F /* 'ttro' */ ++#define kReadMe_Creator 0x74747974 /* 'ttxt' */ + + #define kFinder_FileID 19 + #define kFinder_Name "Finder" + #define kFinder_Chars 6 +-#define kFinder_Type 'FNDR' +-#define kFinder_Creator 'MACS' ++#define kFinder_Type 0x464E4452 /* 'FNDR' */ ++#define kFinder_Creator 0x4D414353 /* 'MACS' */ + + #define kSystem_FileID 20 + #define kSystem_Name "System" + #define kSystem_Chars 6 +-#define kSystem_Type 'zsys' +-#define kSystem_Creator 'MACS' ++#define kSystem_Type 0x7A737973 /* 'zsys' */ ++#define kSystem_Creator 0x4D414353 /* 'MACS' */ + + + |