Creating and dumping HFS volumes

Anything about Mac emulation that does not belong in the above categories.

Moderators: Cat_7, Ronald P. Regensburg

Post Reply
User avatar
adespoton
Forum All-Star
Posts: 4208
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Creating and dumping HFS volumes

Post by adespoton »

Here's another one for tracking a repository:

https://github.com/elliotnunn/machfs

This is a Python library (machfs) plus two command-line tools (MakeHFS and DumpHFS) that should be cross-platform. The library allows you to read and write files in HFS volumes from Python, and the commands do just what you'd expect. Dumped HFS volumes split files into the "rez" tool style data fork (regular file name) resource fork (<filename>.rdump) and type/creator codes (<filename>.idump).

If someone's interested, I could write tools to move .rdump files to .rsrc files and .idump files to .ftc files, or on NTFS volumes, move them to <file>:rsrc and <file>:ftc, or on HFS+ or APFS volumes move them to <file>/..namedfork/rsrc and use setfile to add the file T&C.


Also, HFSExplorer is available as a cross-platform Java app: http://www.catacombae.org/hfsexplorer/ and while it's Windows-centric, can also handle all disk image types (including compressed and encrypted DMGs).
elliotnunn
Student Driver
Posts: 17
Joined: Sun Sep 11, 2016 6:35 am

Re: Creating and dumping HFS volumes

Post by elliotnunn »

Speaking as the author of machfs and its sister package macresources: I am very interested in any utilities that you might write to ease the transition between '/..namedfork/rsrc' and the other formats. (I am almost ashamed to have xkcd 927'd the Macintosh file exchange field, but no other solution worked for me.)

Happy to discuss this further. I'm very eager to see what you can come up with.
User avatar
adespoton
Forum All-Star
Posts: 4208
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: Creating and dumping HFS volumes

Post by adespoton »

Main idea right now is a shell script that just does a cp -- then package it up in a platypus wrapper.
Post Reply