blob: 80b8b2571c34e3497267e7d5fc531647ebc31cc0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
package c; # $Id$
use vars qw($AUTOLOAD);
use c::stuff;
use MDK::Common;
sub AUTOLOAD() {
$AUTOLOAD =~ /::(.*)/ or return;
my @l = eval { &{$c::stuff::{$1}} };
if (my $err = $@) {
$err =~ /Undefined subroutine &main::/ ?
die("can not find function $AUTOLOAD\n" . backtrace()) :
die($err);
}
wantarray() ? @l : $l[0];
}
sub total_sectors {
my ($fd) = @_;
use log;
log::l("special total_sectors");
my ($BLKGETSIZE, $BLKGETSIZE64) = (0x1260, 0x80041272);
open(my $F, "<& $fd") or return;
my $ll = '';
if (ioctl($F, $BLKGETSIZE64, $ll)) {
my ($v, $v1) = unpack("L2", $ll);
$v1 * 1024 * 1024 * 8 + $v / 512;
} elsif (ioctl($F, $BLKGETSIZE, $ll)) {
log::l("defaulting to BLKGETSIZE");
unpack("L", $ll);
} else {
0;
}
};
1;
|