mirror of
https://github.com/stephenenelson/convert-binhex.git
synced 2024-11-25 06:30:54 +00:00
87 lines
3.0 KiB
Plaintext
87 lines
3.0 KiB
Plaintext
NAME
|
|
Convert::BinHex - extract data from Macintosh BinHex files
|
|
|
|
*ALPHA WARNING: this code is currently in its Alpha release. Things may
|
|
change drastically until the interface is hammered out: if you have
|
|
suggestions or objections, please speak up now!*
|
|
|
|
SYNOPSIS
|
|
Simple functions:
|
|
|
|
use Convert::BinHex qw(binhex_crc macbinary_crc);
|
|
|
|
# Compute HQX7-style CRC for data, pumping in old CRC if desired:
|
|
$crc = binhex_crc($data, $crc);
|
|
|
|
# Compute the MacBinary-II-style CRC for the data:
|
|
$crc = macbinary_crc($data, $crc);
|
|
|
|
|
|
Hex to bin, low-level interface. Conversion is actually done via an
|
|
object (the section on "Convert::BinHex::Hex2Bin") which keeps internal
|
|
conversion state:
|
|
|
|
# Create and use a "translator" object:
|
|
my $H2B = Convert::BinHex->hex2bin; # get a converter object
|
|
while (<STDIN>) {
|
|
print $STDOUT $H2B->next($_); # convert some more input
|
|
}
|
|
print $STDOUT $H2B->done; # no more input: finish up
|
|
|
|
|
|
Hex to bin, OO interface. The following operations *must* be done in the
|
|
order shown!
|
|
|
|
# Read data in piecemeal:
|
|
$HQX = Convert::BinHex->open(FH=>\*STDIN) || die "open: $!";
|
|
$HQX->read_header; # read header info
|
|
@data = $HQX->read_data; # read in all the data
|
|
@rsrc = $HQX->read_resource; # read in all the resource
|
|
|
|
|
|
Bin to hex, low-level interface. Conversion is actually done via an
|
|
object (the section on "Convert::BinHex::Bin2Hex") which keeps internal
|
|
conversion state:
|
|
|
|
# Create and use a "translator" object:
|
|
my $B2H = Convert::BinHex->bin2hex; # get a converter object
|
|
while (<STDIN>) {
|
|
print $STDOUT $B2H->next($_); # convert some more input
|
|
}
|
|
print $STDOUT $B2H->done; # no more input: finish up
|
|
|
|
|
|
Bin to hex, file interface. Yes, you can convert *to* BinHex as well as
|
|
from it!
|
|
|
|
# Create new, empty object:
|
|
my $HQX = Convert::BinHex->new;
|
|
|
|
# Set header attributes:
|
|
$HQX->filename("logo.gif");
|
|
$HQX->type("GIFA");
|
|
$HQX->creator("CNVS");
|
|
|
|
# Give it the data and resource forks (either can be absent):
|
|
$HQX->data(Path => "/path/to/data"); # here, data is on disk
|
|
$HQX->resource(Data => $resourcefork); # here, resource is in core
|
|
|
|
# Output as a BinHex stream, complete with leading comment:
|
|
$HQX->encode(\*STDOUT);
|
|
|
|
|
|
PLANNED!!!! Bin to hex, "CAP" interface. *Thanks to Ken Lunde for
|
|
suggesting this*.
|
|
|
|
# Create new, empty object from CAP tree:
|
|
my $HQX = Convert::BinHex->from_cap("/path/to/root/file");
|
|
$HQX->encode(\*STDOUT);
|
|
|
|
|
|
DESCRIPTION
|
|
BinHex is a format used by Macintosh for transporting Mac files safely
|
|
through electronic mail, as short-lined, 7-bit, semi-compressed data
|
|
streams. Ths module provides a means of converting those data streams
|
|
back into into binary data.
|
|
|