├── createjavadoc.bat
├── .gitignore
├── resview.bat
├── unhfs.bat
├── netbeans
├── HFSExplorer
│ ├── .gitignore
│ ├── nbproject
│ │ ├── .gitignore
│ │ ├── genfiles.properties
│ │ └── project.xml
│ └── manifest.mf
└── HFSExplorerNative
│ └── nbproject
│ ├── project.properties
│ ├── .gitignore
│ ├── project.xml
│ ├── Makefile-variables.mk
│ ├── Package-Debug.bash
│ └── Package-Release.bash
├── wbuildall.bat
├── src
├── META-INF
│ ├── hfs-jfuse_libhfs
│ │ └── MANIFEST.MF
│ ├── mkapm
│ │ └── MANIFEST.MF
│ ├── jparted
│ │ └── MANIFEST.MF
│ └── MANIFEST.MF
├── java
│ └── org
│ │ └── catacombae
│ │ ├── hfs
│ │ ├── types
│ │ │ ├── carbon
│ │ │ │ ├── OSType.struct
│ │ │ │ ├── Point.struct
│ │ │ │ └── Rect.struct
│ │ │ ├── hfs
│ │ │ │ ├── ExtDataRec.struct
│ │ │ │ ├── ExtDescriptor.struct
│ │ │ │ ├── CatDataRec.struct
│ │ │ │ ├── HFSVolumeFinderInfo.struct
│ │ │ │ ├── ExtKeyRec.struct
│ │ │ │ ├── CdrFThdRec.struct
│ │ │ │ ├── CatKeyRec.struct
│ │ │ │ ├── CdrThdRec.struct
│ │ │ │ ├── NodeDescriptor.struct
│ │ │ │ ├── BTHdrRec.struct
│ │ │ │ ├── CdrDirRec.struct
│ │ │ │ ├── MacLegacyEncoding.java
│ │ │ │ ├── HFSDateField.java
│ │ │ │ ├── BootBlkHdr.struct
│ │ │ │ ├── CdrFilRec.struct
│ │ │ │ ├── HFSPlusWrapperMDB.struct
│ │ │ │ └── MasterDirectoryBlock.struct
│ │ │ ├── hfsplus
│ │ │ │ ├── HFSUniStr255.struct
│ │ │ │ ├── BlockInfo.struct
│ │ │ │ ├── HFSPlusExtentRecord.struct
│ │ │ │ ├── HFSPlusExtentLeafRecord.struct
│ │ │ │ ├── HFSPlusExtentDescriptor.struct
│ │ │ │ ├── HFSPlusAttributesForkData.struct
│ │ │ │ ├── HFSPlusCatalogKey.struct
│ │ │ │ ├── BlockListHeader.struct
│ │ │ │ ├── HFSPlusAttributesExtents.struct
│ │ │ │ ├── JournalInfoBlock.struct
│ │ │ │ ├── HFSPlusBSDInfo.struct
│ │ │ │ ├── HFSPlusCatalogThread.struct
│ │ │ │ ├── HFSPlusForkData.struct
│ │ │ │ ├── HFSPlusExtentKey.struct
│ │ │ │ ├── JournalHeader.struct
│ │ │ │ ├── HFSPlusAttributesData.struct
│ │ │ │ ├── HFSPlusAttributesKey.struct
│ │ │ │ ├── HFSPlusCatalogFolder.struct
│ │ │ │ ├── HFSPlusCatalogFile.struct
│ │ │ │ ├── BTLeafNode.java
│ │ │ │ ├── HFSPlusAttributesIndexNode.java
│ │ │ │ ├── HFSPlusExtentIndexNode.java
│ │ │ │ ├── BTNode.java
│ │ │ │ ├── BTKey.java
│ │ │ │ ├── BTIndexRecord.java
│ │ │ │ ├── HFSPlusCatalogLeafRecordData.java
│ │ │ │ └── HFSPlusCatalogIndexNode.java
│ │ │ ├── decmpfs
│ │ │ │ └── DecmpfsHeader.struct
│ │ │ ├── finder
│ │ │ │ ├── FolderInfo.struct
│ │ │ │ ├── ExtendedFileInfo.struct
│ │ │ │ ├── ExtendedFolderInfo.struct
│ │ │ │ ├── FileInfo.struct
│ │ │ │ ├── DInfo.struct
│ │ │ │ ├── FInfo.struct
│ │ │ │ ├── FXInfo.struct
│ │ │ │ └── DXInfo.struct
│ │ │ ├── hfsx
│ │ │ │ ├── HFSXKeyCompareType.java
│ │ │ │ ├── HFSXCatalogLeafRecord.java
│ │ │ │ ├── HFSXCatalogLeafNode.java
│ │ │ │ └── HFSXCatalogIndexNode.java
│ │ │ └── hfscommon
│ │ │ │ ├── CommonHFSForkType.java
│ │ │ │ ├── CommonBTLeafRecord.java
│ │ │ │ ├── StringComparator.java
│ │ │ │ ├── CommonBTKeyedRecord.java
│ │ │ │ ├── CommonHFSCatalogThread.java
│ │ │ │ ├── CommonBTRecord.java
│ │ │ │ ├── CommonHFSCatalogThreadRecord.java
│ │ │ │ ├── CommonBTKey.java
│ │ │ │ ├── CommonBTKeyedNode.java
│ │ │ │ ├── CommonBTGenericDataRecord.java
│ │ │ │ └── CommonHFSAttributesIndexNode.java
│ │ ├── HotFilesFile.java
│ │ ├── VolumeHeader.java
│ │ ├── ProgressMonitor.java
│ │ ├── HFSInvalidDataException.java
│ │ ├── Limits.java
│ │ ├── HFSException.java
│ │ └── HFSNotEnoughDataException.java
│ │ ├── bplist
│ │ └── types
│ │ │ ├── BinaryPlistHeader.struct
│ │ │ └── BinaryPlistFooter.struct
│ │ ├── hfsexplorer
│ │ ├── types
│ │ │ ├── resff
│ │ │ │ ├── ResourceName.struct
│ │ │ │ ├── ResourceType.struct
│ │ │ │ ├── ResourceHeader.struct
│ │ │ │ ├── ReferenceListEntry.struct
│ │ │ │ └── ResourceMap.struct
│ │ │ ├── applesingle
│ │ │ │ ├── EntryDescriptor.struct
│ │ │ │ ├── AttributeEntry.struct
│ │ │ │ ├── AppleSingleHeader.struct
│ │ │ │ └── AttributeHeader.struct
│ │ │ ├── dsstore
│ │ │ │ ├── DSStoreTableOfContents.struct
│ │ │ │ ├── DSStoreTableOfContentsEntry.struct
│ │ │ │ ├── DSStoreRootBlock.struct
│ │ │ │ ├── DSStoreTreeBlock.struct
│ │ │ │ └── DSStoreHeader.struct
│ │ │ └── alias
│ │ │ │ └── AliasHeader.struct
│ │ ├── Util.java
│ │ ├── GUIUtil.java
│ │ ├── SpeedUnitUtils.java
│ │ ├── unfinished
│ │ │ └── ErrorMessageException.java
│ │ ├── BuildNumber.java
│ │ ├── testcode
│ │ │ ├── TestRegexp.java
│ │ │ ├── editgpt
│ │ │ │ └── EditGPT.form
│ │ │ ├── ParseExtentLeafNode.java
│ │ │ ├── PrintGPTHeader.java
│ │ │ └── PrintGPTEntry.java
│ │ ├── io
│ │ │ ├── WritableRandomAccessChannel.java
│ │ │ └── RandomAccessChannel.java
│ │ ├── gui
│ │ │ ├── ChainedPanel.java
│ │ │ ├── HFSExplorerJFrame.java
│ │ │ └── StructViewPanel.form
│ │ ├── fs
│ │ │ └── NullProgressMonitor.java
│ │ ├── BasicExtractProgressMonitor.java
│ │ ├── PrefixFileFilter.java
│ │ ├── JarMain.java
│ │ ├── SimplerFileFilter.java
│ │ ├── tools
│ │ │ └── PrintMBRPartitions.java
│ │ └── SimpleFileFilter.java
│ │ ├── storage
│ │ ├── ps
│ │ │ ├── gpt
│ │ │ │ ├── types
│ │ │ │ │ ├── GPTEntry.struct
│ │ │ │ │ └── MutableGUID.java
│ │ │ │ ├── GPTHandlerFactory.java
│ │ │ │ └── GPTRecognizer.java
│ │ │ ├── apm
│ │ │ │ ├── types
│ │ │ │ │ ├── DriverDescriptorEntry.struct
│ │ │ │ │ └── DriverDescriptorRecord.struct
│ │ │ │ └── APMHandlerFactory.java
│ │ │ ├── container
│ │ │ │ ├── ContainerHandlerFactory.java
│ │ │ │ ├── hfs
│ │ │ │ │ └── HFSContainerHandlerFactory.java
│ │ │ │ └── ContainerHandler.java
│ │ │ ├── PartitionSystemHandlerFactory.java
│ │ │ ├── ebr
│ │ │ │ ├── EBRRecognizer.java
│ │ │ │ ├── EBRPartition.java
│ │ │ │ └── EBRHandlerFactory.java
│ │ │ ├── mbr
│ │ │ │ ├── MBRRecognizer.java
│ │ │ │ ├── MBRHandlerFactory.java
│ │ │ │ └── types
│ │ │ │ │ └── MutableMBRPartition.java
│ │ │ ├── PartitionSystemRecognizer.java
│ │ │ ├── PartitionSystemHandler.java
│ │ │ ├── PartitionSystemImplementationInfo.java
│ │ │ ├── Partition.java
│ │ │ └── StandardPartition.java
│ │ ├── fs
│ │ │ ├── FileSystemCapability.java
│ │ │ ├── hfs
│ │ │ │ └── HFSFileSystemRecognizer.java
│ │ │ ├── hfsx
│ │ │ │ ├── HFSXFileSystemRecognizer.java
│ │ │ │ └── HFSXFileSystemHandler.java
│ │ │ ├── FSForkType.java
│ │ │ ├── hfsplus
│ │ │ │ └── HFSPlusFileSystemRecognizer.java
│ │ │ ├── hfscommon
│ │ │ │ ├── HFSCommonFSFile.java
│ │ │ │ └── HFSCommonFileSystemHandlerFactory.java
│ │ │ ├── FileSystemRecognizer.java
│ │ │ ├── FSFile.java
│ │ │ └── FSLink.java
│ │ └── io
│ │ │ └── SubDataLocator.java
│ │ └── jparted
│ │ ├── app
│ │ └── Main.java
│ │ └── lib
│ │ └── AbstractFile.java
└── win32
│ ├── launcher
│ ├── resource.h
│ └── logging.hh
│ └── llio
│ ├── org_catacombae_storage_io_win32_Win32FileStream.h
│ └── llio_common.h
├── wcreatejavadoc.bat
├── doc
├── todo.txt
├── hfsexplorer.nsi
├── dmg_iconsource
│ ├── dmg.ico
│ ├── finderdrive.ico
│ └── finderdrive_folderback.ico
├── version.sdic.txt
└── bugs.txt
├── dumpfsdata.bat
├── dist
├── res
│ └── icon.png
├── lib
│ ├── filedrop.jar
│ ├── llio_arm.dll
│ ├── csframework.jar
│ ├── hfsx_dmglib.jar
│ ├── llio_amd64.dll
│ ├── llio_arm64.dll
│ ├── llio_i386.dll
│ ├── llio_ia64.dll
│ ├── iharder-base64.jar
│ ├── swing-layout-1.0.4.jar
│ └── apache-ant-1.7.0-bzip2.jar
├── bin
│ ├── hfsexplorer.exe
│ ├── hfsx.bat
│ ├── unhfs.bat
│ ├── resview.bat
│ ├── hfsexplorer.bat
│ ├── dumpfsdata.bat
│ ├── hfsx
│ ├── unhfs
│ ├── resview
│ ├── hfsexplorer_vista.vbs
│ └── hfsexplorer
└── doc
│ └── html
│ ├── img
│ └── HFSExplorer_logo.png
│ ├── index.html
│ └── troubleshooting.html
├── resource
├── back.png
├── folder.png
├── info.png
├── extract.png
├── folderup.png
├── forward.png
├── nothing.png
├── emptydocument.png
├── finderdrive_folderback_16.png
├── finderdrive_folderback_32.png
└── finderdrive_folderback_48.png
├── hfsexplorer.bat
├── hfsx.bat
├── test.bat
├── .gitmodules
├── dsstoreinfo.bat
├── hfsx
├── unhfs
├── resview
├── createjavadoc
├── hfsexplorer
├── dsstoreinfo
├── runjparted
├── test
└── vc6buildlauncher.bat
/createjavadoc.bat:
--------------------------------------------------------------------------------
1 | @ant javadoc
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /.antbuild~/
2 | /javadoc.~/
--------------------------------------------------------------------------------
/resview.bat:
--------------------------------------------------------------------------------
1 | @"%~dp0dist\bin\resview.bat" %*
2 |
--------------------------------------------------------------------------------
/unhfs.bat:
--------------------------------------------------------------------------------
1 | @"%~dp0dist\bin\unhfs.bat" %*
2 |
--------------------------------------------------------------------------------
/netbeans/HFSExplorer/.gitignore:
--------------------------------------------------------------------------------
1 | /build/
2 | /dist/
3 |
--------------------------------------------------------------------------------
/netbeans/HFSExplorer/nbproject/.gitignore:
--------------------------------------------------------------------------------
1 | /private/
2 |
--------------------------------------------------------------------------------
/netbeans/HFSExplorerNative/nbproject/project.properties:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/netbeans/HFSExplorerNative/nbproject/.gitignore:
--------------------------------------------------------------------------------
1 | /private/
2 |
--------------------------------------------------------------------------------
/wbuildall.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | call buildall.bat
3 | pause
4 |
--------------------------------------------------------------------------------
/src/META-INF/hfs-jfuse_libhfs/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Class-Path: csframework.jar
2 |
--------------------------------------------------------------------------------
/wcreatejavadoc.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | call createjavadoc.bat
3 | pause
4 |
--------------------------------------------------------------------------------
/doc/todo.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/doc/todo.txt
--------------------------------------------------------------------------------
/dumpfsdata.bat:
--------------------------------------------------------------------------------
1 | @call "%~dp0..\dist\bin\dumpfsdata.bat" %1 %2 %3 %4 %5 %6 %7 %8 %9
2 |
--------------------------------------------------------------------------------
/dist/res/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/res/icon.png
--------------------------------------------------------------------------------
/doc/hfsexplorer.nsi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/doc/hfsexplorer.nsi
--------------------------------------------------------------------------------
/resource/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/resource/back.png
--------------------------------------------------------------------------------
/resource/folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/resource/folder.png
--------------------------------------------------------------------------------
/resource/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/resource/info.png
--------------------------------------------------------------------------------
/dist/lib/filedrop.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/lib/filedrop.jar
--------------------------------------------------------------------------------
/dist/lib/llio_arm.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/lib/llio_arm.dll
--------------------------------------------------------------------------------
/resource/extract.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/resource/extract.png
--------------------------------------------------------------------------------
/resource/folderup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/resource/folderup.png
--------------------------------------------------------------------------------
/resource/forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/resource/forward.png
--------------------------------------------------------------------------------
/resource/nothing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/resource/nothing.png
--------------------------------------------------------------------------------
/dist/bin/hfsexplorer.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/bin/hfsexplorer.exe
--------------------------------------------------------------------------------
/dist/lib/csframework.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/lib/csframework.jar
--------------------------------------------------------------------------------
/dist/lib/hfsx_dmglib.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/lib/hfsx_dmglib.jar
--------------------------------------------------------------------------------
/dist/lib/llio_amd64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/lib/llio_amd64.dll
--------------------------------------------------------------------------------
/dist/lib/llio_arm64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/lib/llio_arm64.dll
--------------------------------------------------------------------------------
/dist/lib/llio_i386.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/lib/llio_i386.dll
--------------------------------------------------------------------------------
/dist/lib/llio_ia64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/lib/llio_ia64.dll
--------------------------------------------------------------------------------
/doc/dmg_iconsource/dmg.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/doc/dmg_iconsource/dmg.ico
--------------------------------------------------------------------------------
/resource/emptydocument.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/resource/emptydocument.png
--------------------------------------------------------------------------------
/dist/lib/iharder-base64.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/lib/iharder-base64.jar
--------------------------------------------------------------------------------
/dist/lib/swing-layout-1.0.4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/lib/swing-layout-1.0.4.jar
--------------------------------------------------------------------------------
/src/META-INF/mkapm/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Main-Class: org.catacombae.hfsexplorer.tools.MkAPM
2 | Class-Path: csframework.jar
3 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/carbon/OSType.struct:
--------------------------------------------------------------------------------
1 | struct OSType {
2 | Char osType[4];
3 | };
4 |
--------------------------------------------------------------------------------
/dist/bin/hfsx.bat:
--------------------------------------------------------------------------------
1 | @java -cp "%~dp0..\lib\hfsx.jar" org.catacombae.hfsexplorer.HFSExplorer %1 %2 %3 %4 %5 %6 %7 %8 %9
2 |
--------------------------------------------------------------------------------
/doc/dmg_iconsource/finderdrive.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/doc/dmg_iconsource/finderdrive.ico
--------------------------------------------------------------------------------
/dist/lib/apache-ant-1.7.0-bzip2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/lib/apache-ant-1.7.0-bzip2.jar
--------------------------------------------------------------------------------
/hfsexplorer.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 | call "%~dp0dist\bin\hfsexplorer.bat" %1 %2 %3 %4 %5 %6 %7 %8 %9
4 | endlocal
5 |
--------------------------------------------------------------------------------
/netbeans/HFSExplorer/manifest.mf:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | X-COMMENT: Main-Class will be added automatically by build
3 |
4 |
--------------------------------------------------------------------------------
/dist/doc/html/img/HFSExplorer_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/dist/doc/html/img/HFSExplorer_logo.png
--------------------------------------------------------------------------------
/resource/finderdrive_folderback_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/resource/finderdrive_folderback_16.png
--------------------------------------------------------------------------------
/resource/finderdrive_folderback_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/resource/finderdrive_folderback_32.png
--------------------------------------------------------------------------------
/resource/finderdrive_folderback_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/resource/finderdrive_folderback_48.png
--------------------------------------------------------------------------------
/hfsx.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 | pushd "%~dp0\dist\bin"
4 | call hfsx.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
5 | popd
6 | endlocal
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/carbon/Point.struct:
--------------------------------------------------------------------------------
1 | struct Point {
2 | SInt16 v;
3 | SInt16 h;
4 | };
5 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfs/ExtDataRec.struct:
--------------------------------------------------------------------------------
1 | struct ExtDataRec {
2 | ExtDescriptor extDataRec[3]; extent data record
3 | };
4 |
--------------------------------------------------------------------------------
/doc/dmg_iconsource/finderdrive_folderback.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unsound/hfsexplorer/HEAD/doc/dmg_iconsource/finderdrive_folderback.ico
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSUniStr255.struct:
--------------------------------------------------------------------------------
1 | struct HFSUniStr255 {
2 | UInt16 length;
3 | UniChar unicode[255];
4 | };
5 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/bplist/types/BinaryPlistHeader.struct:
--------------------------------------------------------------------------------
1 | struct BinaryPlistHeader {
2 | char signature[6];
3 | char version[2];
4 | };
5 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/resff/ResourceName.struct:
--------------------------------------------------------------------------------
1 | struct ResourceName {
2 | UInt8 nameLength;
3 | Char name[2];
4 | };
5 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/BlockInfo.struct:
--------------------------------------------------------------------------------
1 | struct BlockInfo {
2 | UInt64 bnum;
3 | UInt32 bsize;
4 | UInt32 next;
5 | };
6 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusExtentRecord.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusExtentRecord {
2 | HFSPlusExtentDescriptor extentDescriptors[8];
3 | };
4 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/decmpfs/DecmpfsHeader.struct:
--------------------------------------------------------------------------------
1 | struct DecmpfsHeader {
2 | le32 magic;
3 | le32 compressionType;
4 | le64 fileSize;
5 | };
--------------------------------------------------------------------------------
/src/META-INF/jparted/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Main-Class: org.catacombae.jparted.Main
2 | Class-Path: csframework.jar apache-ant-1.7.0-bzip2.jar iharder-base64.jar swing-layout-1.0.4.jar
3 |
--------------------------------------------------------------------------------
/test.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 | PATH=%PATH%;%~dp0dist\lib
4 | java -cp "%~dp0dist\lib\hfsx.jar" org.catacombae.hfsexplorer.%1 %2 %3 %4 %5 %6 %7 %8 %9
5 | endlocal
6 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusExtentLeafRecord.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusExtentLeafRecord {
2 | HFSPlusExtentKey key;
3 | HFSPlusExtentRecord recordData;
4 | };
5 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/applesingle/EntryDescriptor.struct:
--------------------------------------------------------------------------------
1 | struct EntryDescriptor {
2 | UInt32 entryId;
3 | UInt32 entryOffset;
4 | UInt32 entryLength;
5 | };
6 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfs/ExtDescriptor.struct:
--------------------------------------------------------------------------------
1 | struct ExtDescriptor {
2 | UInt16 xdrStABN; first allocation block
3 | UInt16 xdrNumABlks; number of allocation blocks
4 | };
5 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/dsstore/DSStoreTableOfContents.struct:
--------------------------------------------------------------------------------
1 | struct DSStoreTableOfContents {
2 | be32 tocCount;
3 | DSStoreTableOfContentsEntry tocEntries[1];
4 | };
5 |
--------------------------------------------------------------------------------
/src/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Main-Class: org.catacombae.hfsexplorer.JarMain
2 | Class-Path: csframework.jar hfsx_dmglib.jar apache-ant-1.7.0-bzip2.jar filedrop.jar iharder-base64.jar swing-layout-1.0.4.jar
3 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/carbon/Rect.struct:
--------------------------------------------------------------------------------
1 | struct Rect {
2 | SInt16 top;
3 | SInt16 left;
4 | SInt16 bottom;
5 | SInt16 right;
6 | };
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/finder/FolderInfo.struct:
--------------------------------------------------------------------------------
1 | struct FolderInfo {
2 | Rect windowBounds;
3 | UInt16 finderFlags;
4 | Point location;
5 | UInt16 reservedField;
6 | };
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusExtentDescriptor.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusExtentDescriptor {
2 | UInt32 startBlock;
3 | UInt32 blockCount;
4 | };
5 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfs/CatDataRec.struct:
--------------------------------------------------------------------------------
1 | struct CatDataRec {
2 | SInt8 cdrType; record type (SignedByte)
3 | SInt8 cdrResrv2; reserved (SignedByte)
4 | };
5 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusAttributesForkData.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusAttributesForkData {
2 | UInt32 recordType;
3 | UInt32 reserved;
4 | HFSPlusForkData theFork;
5 | };
6 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusCatalogKey.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusCatalogKey {
2 | UInt16 keyLength;
3 | HFSCatalogNodeID parentID;
4 | HFSUniStr255 nodeName;
5 | };
6 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/applesingle/AttributeEntry.struct:
--------------------------------------------------------------------------------
1 | struct AttributeEntry {
2 | ube32 offset;
3 | ube32 length;
4 | be16 flags;
5 | u8 nameLength;
6 | char name[1];
7 | };
8 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/finder/ExtendedFileInfo.struct:
--------------------------------------------------------------------------------
1 | struct ExtendedFileInfo {
2 | SInt16 reserved1[4];
3 | UInt16 extendedFinderFlags;
4 | SInt16 reserved2;
5 | SInt32 putAwayFolderID;
6 | };
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/dsstore/DSStoreTableOfContentsEntry.struct:
--------------------------------------------------------------------------------
1 | struct DSStoreTableOfContentsEntry {
2 | u8 tocNameLength;
3 | char tocName[255];
4 | be32 tocValue;
5 | };
6 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/BlockListHeader.struct:
--------------------------------------------------------------------------------
1 | struct BlockListHeader {
2 | UInt16 maxBlocks;
3 | UInt16 numBlocks;
4 | UInt32 bytesUsed;
5 | UInt32 checksum;
6 | UInt32 pad;
7 | };
8 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/applesingle/AppleSingleHeader.struct:
--------------------------------------------------------------------------------
1 | struct AppleSingleHeader {
2 | UInt32 magicNumber;
3 | UInt32 versionNumber;
4 | Char homeFileSystem[16];
5 | UInt16 numEntries;
6 | };
7 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "external/catacombaeframework"]
2 | path = external/catacombaeframework
3 | url = ../catacombaeframework.git
4 | [submodule "external/dmgextractor"]
5 | path = external/dmgextractor
6 | url = ../dmgextractor.git
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusAttributesExtents.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusAttributesExtents {
2 | UInt32 recordType;
3 | UInt32 reserved;
4 | HFSPlusExtentRecord extents;
5 | };
6 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/JournalInfoBlock.struct:
--------------------------------------------------------------------------------
1 | struct JournalInfoBlock {
2 | UInt32 flags;
3 | UInt32 deviceSignature[8];
4 | UInt64 offset;
5 | UInt64 size;
6 | UInt32 reserved[32];
7 | };
8 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusBSDInfo.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusBSDInfo {
2 | UInt32 ownerID;
3 | UInt32 groupID;
4 | UInt8 adminFlags;
5 | UInt8 ownerFlags;
6 | UInt16 fileMode;
7 | UInt32 special;
8 | };
9 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusCatalogThread.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusCatalogThread {
2 | SInt16 recordType;
3 | SInt16 reserved;
4 | HFSCatalogNodeID parentID;
5 | HFSUniStr255 nodeName;
6 | };
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/dsstore/DSStoreRootBlock.struct:
--------------------------------------------------------------------------------
1 | struct DSStoreRootBlock {
2 | be32 unknown;
3 | be32 numOffsets;
4 | be32 unknown2; // Zeroed in all known cases.
5 | be32 offsetList[1];
6 | };
7 |
--------------------------------------------------------------------------------
/dist/bin/unhfs.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 | REM ** The local extension of the PATH environment variable is neccessary for java to find llio_*.dll
4 | PATH=%PATH%;%~dp0..\lib
5 | java -cp "%~dp0..\lib\hfsx.jar" org.catacombae.hfsexplorer.tools.UnHFS %*
6 | endlocal
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusForkData.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusForkData {
2 | UInt64 logicalSize;
3 | UInt32 clumpSize;
4 | UInt32 totalBlocks;
5 | HFSPlusExtentRecord extents;
6 | };
7 |
--------------------------------------------------------------------------------
/dsstoreinfo.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 | REM ** The local extension of the PATH environment variable is neccessary for java to find llio_*.dll
4 | PATH=%PATH%;%~dp0dist\lib
5 | java -cp "%~dp0dist\lib\hfsx.jar" org.catacombae.hfsexplorer.tools.DSStoreInfo %*
6 | endlocal
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/storage/ps/gpt/types/GPTEntry.struct:
--------------------------------------------------------------------------------
1 | struct GPTEntry {
2 | byte[16] partitionTypeGUID;
3 | byte[16] uniquePartitionGUID;
4 | UInt64 startingLBA;
5 | UInt64 endingLBA;
6 | UInt64 attributeBits;
7 | byte[72] partitionName;
8 | };
9 |
--------------------------------------------------------------------------------
/dist/bin/resview.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 | REM ** The local extension of the PATH environment variable is neccessary for java to find llio_*.dll
4 | PATH=%PATH%;%~dp0..\lib
5 | java -cp "%~dp0..\lib\hfsx.jar" org.catacombae.hfsexplorer.tools.ResourceViewer %*
6 | endlocal
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusExtentKey.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusExtentKey {
2 | UInt16 keyLength;
3 | UInt8 forkType;
4 | UInt8 pad;
5 | HFSCatalogNodeID fileID;
6 | UInt32 startBlock;
7 | };
8 |
--------------------------------------------------------------------------------
/hfsx:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASEDIR="`dirname "$0"`"
4 | if [ $? -ne 0 ]; then
5 | echo "WARNING: No dirname utility found!"
6 | echo " Script will only work if invoked from its parent directory."
7 | BASEDIR="."
8 | fi
9 |
10 | "${BASEDIR}/dist/bin/hfsx" "$@"
11 |
--------------------------------------------------------------------------------
/unhfs:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASEDIR="`dirname "$0"`"
4 | if [ $? -ne 0 ]; then
5 | echo "WARNING: No dirname utility found!"
6 | echo " Script will only work if invoked from its parent directory."
7 | BASEDIR="."
8 | fi
9 |
10 | "${BASEDIR}/dist/bin/unhfs" "$@"
11 |
--------------------------------------------------------------------------------
/resview:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASEDIR="`dirname "$0"`"
4 | if [ $? -ne 0 ]; then
5 | echo "WARNING: No dirname utility found!"
6 | echo " Script will only work if invoked from its parent directory."
7 | BASEDIR="."
8 | fi
9 |
10 | "${BASEDIR}/dist/bin/resview" "$@"
11 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/bplist/types/BinaryPlistFooter.struct:
--------------------------------------------------------------------------------
1 | struct BinaryPlistFooter {
2 | u8 reserved[5];
3 | u8 sortVersion;
4 | u8 offsetTableOffsetSize;
5 | u8 objectRefSize;
6 | be64 numObjects;
7 | be64 topObjectOffset;
8 | be64 offsetTableStart;
9 | };
10 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/finder/ExtendedFolderInfo.struct:
--------------------------------------------------------------------------------
1 | struct ExtendedFolderInfo {
2 | Point scrollPosition; // Scroll position (for icon views)
3 | SInt32 reserved1;
4 | UInt16 extendedFinderFlags;
5 | SInt16 reserved2;
6 | SInt32 putAwayFolderID;
7 | };
8 |
--------------------------------------------------------------------------------
/createjavadoc:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASEDIR="`dirname "$0"`"
4 | if [ $? -ne 0 ]; then
5 | echo "WARNING: No dirname utility found!"
6 | echo " Script will only work if invoked from its parent directory."
7 | BASEDIR="."
8 | fi
9 |
10 | cd "${BASEDIR}"
11 |
12 | ant javadoc
13 |
--------------------------------------------------------------------------------
/hfsexplorer:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASEDIR="`dirname "$0"`"
4 | if [ $? -ne 0 ]; then
5 | echo "WARNING: No dirname utility found!"
6 | echo " Script will only work if invoked from its parent directory."
7 | BASEDIR="."
8 | fi
9 |
10 | "${BASEDIR}/dist/bin/hfsexplorer" "$@"
11 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/dsstore/DSStoreTreeBlock.struct:
--------------------------------------------------------------------------------
1 | struct DSStoreTreeBlock {
2 | be32 firstDataBlockID;
3 | be32 recordsInTree;
4 | be32 levelsOfInternalBlocks;
5 | be32 totalTreeBlocks;
6 | be32 unknownAlways0x1000;
7 | };
8 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/storage/ps/apm/types/DriverDescriptorEntry.struct:
--------------------------------------------------------------------------------
1 | struct DriverDescriptorEntry {
2 | UInt32 ddBlock; // {first driver's starting block}
3 | UInt16 ddSize; // {size of the driver, in 512-byte blocks}
4 | UInt16 ddType; // {operating system type (MacOS = 1)}
5 | };
6 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/applesingle/AttributeHeader.struct:
--------------------------------------------------------------------------------
1 | struct AttributeHeader {
2 | be32 magic;
3 | be32 debugTag;
4 | ube32 totalEnd;
5 | ube32 dataStart;
6 | ube32 dataLength;
7 | char reserved[12];
8 | be16 flags;
9 | ube16 numAttrs;
10 | };
11 |
--------------------------------------------------------------------------------
/dist/bin/hfsexplorer.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 | REM ** The local extension of the PATH environment variable is neccessary for java to find llio_*.dll
4 | PATH=%PATH%;%~dp0..\lib
5 | java -cp "%~dp0..\lib\hfsx.jar" org.catacombae.hfsexplorer.FileSystemBrowserWindow %1 %2 %3 %4 %5 %6 %7 %8 %9
6 | endlocal
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/JournalHeader.struct:
--------------------------------------------------------------------------------
1 | struct JournalHeader {
2 | UInt32 magic;
3 | UInt32 endian;
4 | UInt64 start;
5 | UInt64 end;
6 | UInt64 size;
7 | UInt32 blhdrSize;
8 | UInt32 checksum;
9 | UInt32 jhdrSize;
10 | };
11 |
--------------------------------------------------------------------------------
/dist/bin/dumpfsdata.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 | REM ** The local extension of the PATH environment variable is neccessary for java to find llio_*.dll
4 | PATH=%PATH%;%~dp0..\lib
5 | java -cp "%~dp0..\lib\hfsx.jar" org.catacombae.hfsexplorer.tools.DumpFSInfo %1 %2 %3 %4 %5 %6 %7 %8 %9
6 | endlocal
7 | pause
8 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/finder/FileInfo.struct:
--------------------------------------------------------------------------------
1 | struct FileInfo {
2 | OSType fileType; // The type of the file
3 | OSType fileCreator; // The file's creator
4 | UInt16 finderFlags;
5 | Point location; // File's location in the folder.
6 | UInt16 reservedField;
7 | };
8 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusAttributesData.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusAttributesData {
2 | UInt32 recordType; /* == kHFSPlusAttrInlineData */
3 | UInt32 reserved[2];
4 | UInt32 attrSize; /* size of attribute data in bytes */
5 | UInt8 attrData[2]; /* variable length */
6 | };
7 |
--------------------------------------------------------------------------------
/dist/bin/hfsx:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASEDIR="`dirname "$0"`"
4 | if [ $? -ne 0 ]; then
5 | echo "WARNING: No dirname utility found!"
6 | echo " Script will only work if invoked from its parent directory."
7 | BASEDIR="."
8 | fi
9 |
10 | java -cp "${BASEDIR}/../lib/hfsx.jar" org.catacombae.hfsexplorer.HFSExplorer "$@"
11 |
--------------------------------------------------------------------------------
/dist/bin/unhfs:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASEDIR="`dirname "$0"`"
4 | if [ $? -ne 0 ]; then
5 | echo "WARNING: No dirname utility found!"
6 | echo " Script will only work if invoked from its parent directory."
7 | BASEDIR="."
8 | fi
9 |
10 | java -cp "${BASEDIR}/../lib/hfsx.jar" org.catacombae.hfsexplorer.tools.UnHFS "$@"
11 |
--------------------------------------------------------------------------------
/dsstoreinfo:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASEDIR="`dirname "$0"`"
4 | if [ $? -ne 0 ]; then
5 | echo "WARNING: No dirname utility found!"
6 | echo " Script will only work if invoked from its parent directory."
7 | BASEDIR="."
8 | fi
9 |
10 | java -cp "${BASEDIR}/dist/lib/hfsx.jar" org.catacombae.hfsexplorer.tools.DSStoreInfo "$@"
11 |
--------------------------------------------------------------------------------
/dist/bin/resview:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASEDIR="`dirname "$0"`"
4 | if [ $? -ne 0 ]; then
5 | echo "WARNING: No dirname utility found!"
6 | echo " Script will only work if invoked from its parent directory."
7 | BASEDIR="."
8 | fi
9 |
10 | java -cp "${BASEDIR}/../lib/hfsx.jar" org.catacombae.hfsexplorer.tools.ResourceViewer "$@"
11 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfs/HFSVolumeFinderInfo.struct:
--------------------------------------------------------------------------------
1 | struct HFSVolumeFinderInfo {
2 | be32 blessedSystemFolder;
3 | be32 startupApplicationParentFolder;
4 | be32 openFolderList;
5 | be32 alternateMacOSBlessedSystemFolder;
6 | be32 reserved;
7 | be32 alternateMacOSXBlessedSystemFolder;
8 | be64 volumeUUID;
9 | };
10 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfs/ExtKeyRec.struct:
--------------------------------------------------------------------------------
1 | struct ExtKeyRec {
2 | SInt8 xkrKeyLen; key length (SignedByte)
3 | SInt8 xkrFkType; fork type (SignedByte)
4 | SInt32 xkrFNum; file number (LongInt)
5 | SInt16 xkrFABN; starting file allocation block (Integer)
6 | };
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/resff/ResourceType.struct:
--------------------------------------------------------------------------------
1 | struct ResourceType {
2 | Char type[4]; // Resource type.
3 | UInt16 instanceCount; // Number of resources of this type in map minus 1.
4 | UInt16 referenceListOffset; // Offset from beginning of resource type list to reference list for this type.
5 | };
6 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/dsstore/DSStoreHeader.struct:
--------------------------------------------------------------------------------
1 | struct DSStoreHeader {
2 | be32 alignment;
3 | u8 signature[4]; // Must be 'Bud1' in ASCII.
4 | be32 rootBlockOffset1; // Must be equal to rootBlockOffset2.
5 | be32 rootBlockSize;
6 | be32 rootBlockOffset2; // Must be equal to rootBlockOffset1.
7 | u8 unknown[16];
8 | };
9 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfs/CdrFThdRec.struct:
--------------------------------------------------------------------------------
1 | struct CdrFThdRec {
2 | SInt8 cdrType; record type (SignedByte)
3 | SInt8 cdrResrv2; reserved (SignedByte)
4 | SInt32 fthdResrv[2]; reserved (ARRAY[1..2] OF LongInt)
5 | SInt32 fthdParID; parent ID for this file (LongInt)
6 | Char fthdCName[32]; name of this file (Str31)
7 | };
8 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfs/CatKeyRec.struct:
--------------------------------------------------------------------------------
1 | struct CatKeyRec {
2 | SInt8 ckrKeyLen; key length (SignedByte)
3 | SInt8 ckrResrv1; reserved (SignedByte)
4 | SInt32 ckrParID; parent directory ID (LongInt)
5 | UInt8 ckrCNameLen length of catalog node name (part of Str31)
6 | Char ckrCName[31]; catalog node name (part of Str31)
7 | };
8 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfs/CdrThdRec.struct:
--------------------------------------------------------------------------------
1 | struct CdrThdRec {
2 | SInt8 cdrType; record type (SignedByte)
3 | SInt8 cdrResrv2; reserved (SignedByte)
4 | SInt32 thdResrv[2]; reserved (ARRAY[1..2] OF LongInt)
5 | SInt32 thdParID; parent ID for this directory (LongInt)
6 | Char thdCName[32]; name of this directory (Str31)
7 | };
8 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/resff/ResourceHeader.struct:
--------------------------------------------------------------------------------
1 | struct ResourceHeader {
2 | UInt32 dataOffset; // Offset from the beginning of the resource fork to the beginning of the resource data.
3 | UInt32 mapOffset; // Offset from the beginning of the resource fork to the beginning of the resource map.
4 | UInt32 dataLength; // Length of resource data.
5 | UInt32 mapLength; // Length of resource map.
6 | };
7 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfs/NodeDescriptor.struct:
--------------------------------------------------------------------------------
1 | struct NodeDescriptor {
2 | SInt32 ndFLink; forward link (LongInt)
3 | SInt32 ndBLink; backward link (LongInt)
4 | SInt8 ndType; node type (SignedByte)
5 | SInt8 ndNHeight; node level (SignedByte)
6 | SInt16 ndNRecs; number of records in node (Integer)
7 | SInt16 ndResv2; reserved (Integer)
8 | };
9 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusAttributesKey.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusAttributeKey {
2 | UInt16 keyLength; /* key length (in bytes) */
3 | UInt16 pad; /* set to zero */
4 | UInt32 fileID; /* file associated with attribute */
5 | UInt32 startBlock; /* first allocation block number for extents */
6 | UInt16 attrNameLen; /* number of unicode characters */
7 | UInt16 attrName[127]; /* attribute name (Unicode) */
8 | };
9 |
--------------------------------------------------------------------------------
/doc/version.sdic.txt:
--------------------------------------------------------------------------------
1 | !SimpleDictionary: 1.0
2 | AppName: HFSExplorer
3 | Version: 2021.10.9
4 | Build: 2021100900
5 | Date: 2021-10-09
6 | Installer: http://downloads.sourceforge.net/catacombae/hfsexplorer-2021.10.9-setup.exe?use_mirror=
7 | Binary: http://downloads.sourceforge.net/catacombae/hfsexplorer-2021.10.9-bin.zip?use_mirror=
8 | Source: http://downloads.sourceforge.net/catacombae/hfsexplorer-2021.10.9-src.zip?use_mirror=
9 | Changelog: http://www.catacombae.org/hfsexplorer/changelog.txt
10 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/finder/DInfo.struct:
--------------------------------------------------------------------------------
1 | struct DInfo {
2 | Rect frRect; The rectangle for the window that the Finder displays when the user opens the folder.
3 | UInt16 frFlags; Reserved.
4 | Point frLocation; Location of the folder in the parent window.
5 | SInt16 frView; The manner in which folders are displayed; this is set by the user with commands from the View menu of the Finder.
6 | };
7 |
--------------------------------------------------------------------------------
/runjparted:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASEDIR="`dirname "$0"`"
4 | if [ $? -ne 0 ]; then
5 | echo "WARNING: No dirname utility found!"
6 | echo " Script will only work if invoked from its parent directory."
7 | BASEDIR="."
8 | fi
9 |
10 | LIB="${BASEDIR}/dist/lib"
11 |
12 | java -cp "${BASEDIR}/targets/jparted/lib/jparted.jar":"${LIB}/hfsx_dmglib.jar":"${LIB}/swing-layout-1.0.4.jar":"${LIB}/apache-ant-1.7.0-bzip2.jar":"${LIB}/iharder-base64.jar":"${LIB}/catacombae_io.jar" org.catacombae.jparted.app.Main "$@"
13 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/types/resff/ReferenceListEntry.struct:
--------------------------------------------------------------------------------
1 | struct ReferenceListEntry {
2 | UInt16 resourceID; // Resource ID
3 | UInt16 resourceNameOffset; // Offset from beginning of resource name list to resource name
4 | UInt8 resourceAttributes; // Resource attributes
5 | UInt8 resourceDataOffset[3]; // Offset from beginning of resource data to data for this resource.
6 | UInt32 reserved1; // Reserved for handle to resource.
7 | };
8 |
--------------------------------------------------------------------------------
/netbeans/HFSExplorer/nbproject/genfiles.properties:
--------------------------------------------------------------------------------
1 | build.xml.data.CRC32=9e78c37f
2 | build.xml.script.CRC32=19fcce8b
3 | build.xml.stylesheet.CRC32=958a1d3e@1.26.2.45
4 | # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
5 | # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
6 | nbproject/build-impl.xml.data.CRC32=9e78c37f
7 | nbproject/build-impl.xml.script.CRC32=13e1674e
8 | nbproject/build-impl.xml.stylesheet.CRC32=5c621a33@1.26.2.45
9 |
--------------------------------------------------------------------------------
/dist/bin/hfsexplorer_vista.vbs:
--------------------------------------------------------------------------------
1 | ' finding documentation about this scripting language and its host was NOT EASY.
2 | ' Took me too much time. Time that I should have spent on studying scientific computing.
3 | ' Anyway, this script invokes the UAC-dialog and gives administrator priviligies to the
4 | ' FileSystemBrowser
5 |
6 | Set objShell = CreateObject("Shell.Application")
7 | Set objFolder = objShell.Namespace(WScript.ScriptFullName & "\..")
8 | Set objFolderItem = objFolder.ParseName("hfsexplorer.bat")
9 | objFolderItem.InvokeVerb "runas"
10 |
--------------------------------------------------------------------------------
/src/win32/launcher/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Visual C++ generated include file.
3 | // Used by launcher.rc
4 | //
5 | #define IDI_ICON1 103
6 | #define IDI_ICON2 104
7 |
8 | // Next default values for new objects
9 | //
10 | #ifdef APSTUDIO_INVOKED
11 | #ifndef APSTUDIO_READONLY_SYMBOLS
12 | #define _APS_NEXT_RESOURCE_VALUE 105
13 | #define _APS_NEXT_COMMAND_VALUE 40001
14 | #define _APS_NEXT_CONTROL_VALUE 1000
15 | #define _APS_NEXT_SYMED_VALUE 101
16 | #endif
17 | #endif
18 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/finder/FInfo.struct:
--------------------------------------------------------------------------------
1 | struct FInfo {
2 | OSType fdType; File type.
3 | OSType fdCreator; The signature of the application that created the file.
4 | UInt16 fdFlags; Finder flags. See "Finder Flags."
5 | Point fdLocation; The location--specified in coordinates local to the window--of the file's icon within its window.
6 | SInt16 fdFldr; The window in which the file's icon appears; this information is meaningful only to the Finder.
7 | };
8 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/HFSPlusCatalogFolder.struct:
--------------------------------------------------------------------------------
1 | struct HFSPlusCatalogFolder {
2 | SInt16 recordType;
3 | UInt16 flags;
4 | UInt32 valence;
5 | HFSCatalogNodeID folderID;
6 | UInt32 createDate;
7 | UInt32 contentModDate;
8 | UInt32 attributeModDate;
9 | UInt32 accessDate;
10 | UInt32 backupDate;
11 | HFSPlusBSDInfo permissions;
12 | FolderInfo userInfo;
13 | ExtendedFolderInfo finderInfo;
14 | UInt32 textEncoding;
15 | UInt32 reserved;
16 | };
17 |
--------------------------------------------------------------------------------
/test:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BASEDIR="`dirname "$0"`"
4 | if [ $? -ne 0 ]; then
5 | echo "WARNING: No dirname utility found!"
6 | echo " Script will only work if invoked from its parent directory."
7 | BASEDIR="."
8 | fi
9 |
10 | CLASSPATH="${BASEDIR}/dist/lib/hfsx.jar":"${BASEDIR}/dist/lib/swing-layout-1.0.4.jar":"${BASEDIR}/dist/lib/hfsx_dmglib.jar":"${BASEDIR}/dist/lib/apache-ant-1.7.0-bzip2.jar":"${BASEDIR}/dist/lib/filedrop.jar":"${BASEDIR}/dist/lib/iharder-base64.jar":"${BASEDIR}/dist/lib/catacombae_io.jar"
11 | java -cp "${CLASSPATH}" org.catacombae.hfsexplorer.$1 ${2:+"${2}"} ${3:+"$3"} ${4:+"$4"} ${5:+"$5"} ${6:+"$6"} ${7:+"$7"} ${8:+"$8"} ${9:+"$9"}
12 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/storage/ps/apm/types/DriverDescriptorRecord.struct:
--------------------------------------------------------------------------------
1 | struct DriverDescriptorRecord {
2 | be16 sbSig; // Device signature.
3 | be16 sbBlkSize; // Block size of the device.
4 | be32 sbBlkCount; // Number of blocks on the device.
5 | be16 sbDevType; // Reserved.
6 | be16 sbDevId; // Reserved.
7 | be32 dbData; // Reserved.
8 | be16 sbDrvrCount; // Number of driver descriptor entries.
9 | DriverDescriptorEntry entries[1]; // Drivers, if any.
10 | u8 ddPad[1]; // Reserved.
11 | };
12 |
--------------------------------------------------------------------------------
/netbeans/HFSExplorerNative/nbproject/project.xml:
--------------------------------------------------------------------------------
1 |

These help pages are provided as guidance to using the application, but they are far from complete. If you have anything to add, don't hesitate to email me and contribute to the user friendliness of HFSExplorer.
11 | The following topics are available:
true if a file system can be detected at the
37 | * specified offset in fsStream, and false otherwise.
38 | */
39 | public boolean detect(ReadableRandomAccessStream fsStream, long offset, long length);
40 | }
41 |
--------------------------------------------------------------------------------
/src/win32/launcher/logging.hh:
--------------------------------------------------------------------------------
1 | #ifndef __LOGGING_HH
2 | #define __LOGGING_HH
3 |
4 | #define FALSE 0
5 | #define TRUE 1
6 |
7 | #ifndef LOGGING_ENABLED
8 | #define LOGGING_ENABLED TRUE
9 | #endif /* LOGGING_ENABLED */
10 |
11 | /** Format placeholder to use for _TCHAR strings in log messages. */
12 | #ifdef _UNICODE
13 | #define FMTts "S"
14 | #else
15 | #define FMTts "s"
16 | #endif
17 |
18 | /* true if a partition system can be detected at the
37 | * specified offset in fsStream, and false otherwise.
38 | */
39 | public boolean detect(ReadableRandomAccessStream fsStream, long offset, long length);
40 | }
41 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfs/MasterDirectoryBlock.struct:
--------------------------------------------------------------------------------
1 | struct MasterDirectoryBlock {
2 | UInt16 drSigWord; volume signature
3 | UInt32 drCrDate; date and time of volume creation
4 | UInt32 drLsMod; date and time of last modification
5 | UInt16 drAtrb; volume attributes
6 | UInt16 drNmFls; number of files in root directory
7 | UInt16 drVBMSt; first block of volume bitmap
8 | UInt16 drAllocPtr; start of next allocation search
9 | UInt16 drNmAlBlks; number of allocation blocks in volume
10 | UInt32 drAlBlkSiz; size (in bytes) of allocation blocks
11 | UInt32 drClpSiz; default clump size
12 | UInt16 drAlBlSt; first allocation block in volume
13 | UInt32 drNxtCNID; next unused catalog node ID
14 | UInt16 drFreeBks; number of unused allocation blocks
15 | UInt8 drVNLength; length of volume name
16 | Char drVN[28]; volume name
17 | UInt32 drVolBkUp; date and time of last backup
18 | UInt16 drVSeqNum; volume backup sequence number
19 | UInt32 drWrCnt; volume write count
20 | UInt32 drXTClpSiz; clump size for extents overflow file
21 | UInt32 drCTClpSiz; clump size for catalog file
22 | UInt16 drNmRtDirs; number of directories in root directory
23 | UInt32 drFilCnt; number of files in volume
24 | UInt32 drDirCnt; number of directories in volume
25 | HFSVolumeFinderInfo drFndrInfo; information used by the Finder
26 | UInt16 drVCSize; size (in blocks) of volume cache
27 | UInt16 drVBMCSize; size (in blocks) of volume bitmap cache
28 | UInt16 drCtlCSize; size (in blocks) of common volume cache
29 | UInt32 drXTFlSize; size of extents overflow file
30 | ExtDataRec drXTExtRec; extent record for extents overflow file
31 | UInt32 drCTFlSize; size of catalog file
32 | ExtDataRec drCTExtRec; extent record for catalog file
33 | };
34 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfsexplorer/gui/HFSExplorerJFrame.java:
--------------------------------------------------------------------------------
1 | /*-
2 | * Copyright (C) 2015 Erik Larsson
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 | *
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU General Public License
15 | * along with this program. If not, see partitionNumber, or
33 | * null if there is no partition with the specified number.
34 | *
35 | * @param partitionNumber the requested partition number.
36 | * @return the partition with number partitionNumber, or
37 | * null if there is no partition with the specified number.
38 | */
39 | public Partition getPartition(int partitionNumber) {
40 | Partition[] parts = getPartitions();
41 | if(partitionNumber >= 0 && partitionNumber < parts.length)
42 | return parts[partitionNumber];
43 | else
44 | return null;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/dist/doc/html/troubleshooting.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | This can have many causes. First you have to make sure that HFSExplorer can find your hard drives. If the list box labeled "Detected devices" is empty or contains only "CdRom"-devices, your user probably doesn't have sufficient rights to access hard disk devices directly.
12 |To gain sufficient rights,
13 | run the program through the menu shortcut "Run HFSExplorer in Administrator mode".
14 | If you're running Windows Vista and have User Account Control turned on, you will get a dialog asking for credentials if you're a non-administrator user, or a dialog asking you to confirm that you want to give administrator rights to the application if you are an administrator user.
15 | If you're running an earlier version of Windows, such as Windows XP, you will get a dialog asking you to enter the username and password of an administrator user.
16 | HFSExplorer cannot currently read from attached hard drives without administrator rights, because of security barriers in the operating system.
If you can see your hard drives and "Autodetect" still doesn't do the job, try to load the file system manually by trying to load each of the detected hard drives. If one of them does work, when autodetect does not, there is a bug in the "Autodetect" code, and you should report it back to the developer.
18 | 19 | 20 | -------------------------------------------------------------------------------- /src/java/org/catacombae/hfsexplorer/JarMain.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * Copyright (C) 2008 Erik Larsson 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, seedata to the EBR partition data.
33 | * @param baseOffset the base offset which we will resolve startOffset
34 | * against.
35 | * @param sectorSize
36 | */
37 | public EBRPartition(byte[] data, int offset, long baseOffset, int sectorSize) {
38 | super(data, offset, sectorSize);
39 | this.baseOffset = baseOffset;
40 | }
41 |
42 | /** Copy constructor. */
43 | public EBRPartition(EBRPartition source) {
44 | super(source);
45 | this.baseOffset = source.baseOffset;
46 | }
47 |
48 | // Defined in Partition
49 | @Override
50 | public long getStartOffset() { return super.getStartOffset()+baseOffset; }
51 | }
52 |
--------------------------------------------------------------------------------
/src/java/org/catacombae/hfs/types/hfsplus/BTIndexRecord.java:
--------------------------------------------------------------------------------
1 | /*-
2 | * Copyright (C) 2006 Erik Larsson
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 | *
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU General Public License
15 | * along with this program. If not, see 24 | * A partition is a string of bytes. It is a substring of some possibly larger 25 | * string of bytes (usually representing a physical device holding the data, 26 | * such as a hard disk, a memory stick or an optical disc). 27 | * 28 | * A partition usually has metadata asssociated with it, facilitating the 29 | * interpretation of the data inside the partition. This simple abstraction 30 | * produces three fundamental variables: 31 | * the start offset, the length of the partition and the partition type. 32 | * 33 | * While most partition systems specify their offsets in sectors or blocks, the 34 | * unit of this general partition will be one byte, so most implementations will 35 | * need to convert from the native sector number to an actual byte offset/length. 36 | *37 | * 38 | * @author Erik Larsson 39 | */ 40 | public interface Partition extends PrintableStruct { 41 | /** Returns the start offset in bytes. */ 42 | public abstract long getStartOffset(); 43 | 44 | /** Returns the length of the partition in bytes. */ 45 | public abstract long getLength(); 46 | 47 | /** Returns the type of the partition. */ 48 | public abstract PartitionType getType(); 49 | } 50 | -------------------------------------------------------------------------------- /src/java/org/catacombae/hfsexplorer/gui/StructViewPanel.form: -------------------------------------------------------------------------------- 1 | 2 | 3 | 43 | -------------------------------------------------------------------------------- /src/java/org/catacombae/storage/io/SubDataLocator.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * Copyright (C) 2009 Erik Larsson 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see
null if the link was invalid.
38 | */
39 | public FSEntry getLinkTarget(String[] parentDir);
40 |
41 | /**
42 | * Returns a context specific string which shows the intended target for this link in the syntax
43 | * of its file system. This string is only for display purposes in info boxes or debug messages.
44 | * It doesn't have any specified format.
45 | *
46 | * @return a context specific string which shows the intended target for this link.
47 | */
48 | public String getLinkTargetString();
49 | }
50 |
--------------------------------------------------------------------------------