Subject: | Does not work properly on 64 bit systems |
After running the SYS_statfs system call, the data comes back in $fmt,
which is assumed to be packed as 7 longs. On 64 bit systems, however,
this will come back as 7 quads. This causes it to misreport all of the
return values, and will most likely make them all zeros (kbytes used,
kbytes free.)
The change would be
else {
printf "raw L7 %s\n", join " ", unpack "L7", $fmt
if $DEBUG && $DEBUG > 1;
($type, $bsize, $blocks, $bfree, $bavail, $files, $ffree) =
unpack "L7", $fmt;
}
to
else {
printf "raw Q7 %s\n", join " ", unpack "Q7", $fmt
if $DEBUG && $DEBUG > 1;
($type, $bsize, $blocks, $bfree, $bavail, $files, $ffree) =
unpack "Q7", $fmt;
}
around line 110.
How this should best be chosen at run time I don't know.