I've comes across this patch to handle unpack "d" on an ARM platform.
It was part of a Tiff library for Perl. Instead of getting a value 1
returned the value 5.29980882362664e-315 was returned. The patch is old
from 2005 which makes me think some compiler update may have removed
it.
It is worth nothing that 0x00000ff300000000 is 5.29980882362664e-315 on
some endian configurations.
Code:
--------------------
my $double = pack ("d",1);
my $hex = unpack("h*",$double);
if ( $hex eq "00000ff300000000" ){
$swapDoubles=1;
}
else {
$swapDoubles=0;
}
.
.
.
sub DoUnpackD(@)
{
my ($bytes, $template, $dataPt, $pos) = @_;
my $val='';
if ($swapBytes) {
$val = '';
$val .= substr($$dataPt,$pos+$bytes,1) while $bytes--;
} else {
$val = substr($$dataPt,$pos,$bytes);
}
if ($swapDoubles) {
my $bot = substr($val,0,4);
my $top = substr($val,4,4);
$val=$top.$bot;
}
defined($val) or return undef;
return unpack($template,$val);
}
--------------------
--
bpa
------------------------------------------------------------------------
bpa's Profile: http://forums.slimdevices.com/member.php?userid=1806
View this thread: http://forums.slimdevices.com/showthread.php?t=70812
_______________________________________________
plugins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/plugins