EBook-Tools
view release on metacpan or search on metacpan
lib/EBook/Tools/IMP.pm view on Meta::CPAN
=item * C<size>
The expected size in bytes of the actual resource data. A warning
will be carped if this does not match the actual size of the data
following the header.
=item * C<type>
The four-letter type of the resource.
=item * C<unknown2>
A 32-bit unsigned int of unknown purpose. Expected values are 0 or 1.
Use with caution. This key may be renamed later if more information
is found.
=item * C<data>
The actual resource data.
=back
=cut
sub parse_imp_resource_v2
{
my ($data) = @_;
my $subname = (caller(0))[3];
debug(3,"DEBUG[",$subname,"]");
my @list; # Temporary list
my %resource; # Hash containing resource data and metadata
my $size; # Actual size of resource data
@list = unpack('a[4]NNa[4]N',$data);
$resource{name} = $list[0];
$resource{unknown1} = $list[1];
$resource{size} = $list[2];
$resource{type} = $list[3];
$resource{unknown2} = $list[4];
$resource{data} = substr($data,20);
$size = length($resource{data});
if($size != $resource{size})
{
carp($subname,"(): resource '",$resource{name},"' has ",
$size," bytes (expected ",$resource{size},")!\n");
}
debug(2,"DEBUG: found resource '",$resource{name},
"', type '",$resource{type},"' [",$resource{size}," bytes,",
" unk1=",$resource{unknown1}," unk2=",$resource{unknown2},"]");
return \%resource;
}
########## END CODE ##########
=head1 BUGS AND LIMITATIONS
=over
=item * Not finished. Do not try to use yet.
=item * MacPaint PICT images are not well-supported. If present in
the book, they will be saved, but a warning will be carped about
invalid image data.
=item * Support for v1 files is completely untested and implemented
with some guesswork. Bug reports welcome.
=back
=head1 AUTHOR
Zed Pobre <zed@debian.org>
=head1 THANKS
Thanks are due to Nick Rapallo <nrapallo@yahoo.ca> for invaluable
assistance in understanding the .IMP format and testing this code.
Thanks are also due to Jeffrey Kraus-yao <krausyaoj@ameritech.net> for
his work reverse-engineering the .IMP format to begin with, and the
documentation at L<http://krausyaoj.tripod.com/reb1200.htm>.
=head1 LICENSE AND COPYRIGHT
Copyright 2008 Zed Pobre
Licensed to the public under the terms of the GNU GPL, version 2.
=cut
1;
__END__
( run in 0.717 second using v1.01-cache-2.11-cpan-39bf76dae61 )