Sys-Info-Driver-BSD
view release on metacpan or search on metacpan
builder/Build/Spec.pm view on Meta::CPAN
}
my $buf;
while ( my $line = <$fh> ) {
chomp $line;
last if $line =~ m{ \A =head }xms;
$buf .= $line;
}
$fh->close || croak "Can not close $file: $!";
croak 'Unable to get ABSTRACT' if ! $buf;
$buf = trim( $buf );
my($mod, $desc) = split m{\-}xms, $buf, 2;
$desc = trim( $desc ) || croak 'Unable to get ABSTRACT';
return $desc;
}
1;
__END__
lib/Sys/Info/Driver/BSD.pm view on Meta::CPAN
sub dmesg {
my $self = __PACKAGE__;
my $buf = qx(dmesg 2>&1); ## no critic (InputOutput::ProhibitBacktickOperators)
return +() if ! $buf;
my $skip = 1;
my $i = -1; ## no critic (ValuesAndExpressions::ProhibitMagicNumbers)
my @buf;
foreach my $line ( split m{\n}xms, $buf ) {
chomp $line;
$skip = 0 if $line =~ m{ \A CPU: \s }xms;
next if $skip;
if ( $line =~ m{ \A \s+ (.+?) \z }xms ) {
my($key, $value) = split m{=}xms, $line, 2;
next if ! $value;
$buf[$i]->{_sub}{ $self->trim($key) } = $self->trim($value);
next;
}
my($key, $value) = split m{:\s}xms, $line, 2;
next if ! $value;
next if $value eq 'filesystem full';
$i++;
push @buf, { $self->trim($key) => $self->trim($value) };
}
my %rv;
my @pci;
foreach my $e ( @buf ) {
my $is_pci = grep { m{\A pci }xms } keys %{ $e };
lib/Sys/Info/Driver/BSD.pm view on Meta::CPAN
if ( $rv{CPU} && ref $rv{CPU} eq 'HASH' ) {
my %cpu = %{ $rv{CPU} };
my @flags = $self->_extract_dmesg_flags( \%cpu, qw/ Features Features2 / );
$cpu{value} =~ s[\s{2,}][ ]xmsg if $cpu{value};
$cpu{flags} = [ sort @flags ] if @flags;
if ( $cpu{Origin} && $cpu{Origin} =~ m{ \A "(.+?)" \s+ (.+?) \z }xms ) {
$cpu{Origin} = {
vendor => $1,
( map { split m{\s=\s}xms, $_ } split m/\s{2,}/xms, $2 )
};
}
if ( exists $cpu{value} ) {
$cpu{name} = delete $cpu{value};
}
if ( $cpu{'AMD Features'} ) {
my @amd = $self->_extract_dmesg_flags(
\%cpu, 'AMD Features', 'AMD Features2'
);
lib/Sys/Info/Driver/BSD.pm view on Meta::CPAN
return %rv;
}
sub _extract_dmesg_flags {
my($self, $ref, @keys) = @_;
my @raw = map { delete $ref->{ $_ } } @keys;
my @flags;
foreach my $flag ( @raw ) {
next if ! $flag;
if ( $flag =~ m{ \A (0x.+?)<(.+?)> \z }xms ) {
push @flags, split m{,}xms, $2;
}
}
return @flags;
}
1;
__END__
=head1 NAME
lib/Sys/Info/Driver/BSD/OS.pm view on Meta::CPAN
require Sys::Info::Device;
my $cpu = Sys::Info::Device->new('CPU');
my $arch = ($cpu->identify)[0]->{architecture};
my $physmem = fsysctl('hw.physmem');
my $usermem = fsysctl('hw.usermem');
my $swap_call = $^O eq 'openbsd' ? '/sbin/swapctl -l' : '/usr/sbin/swapinfo';
my $swap_buf = qx($swap_call 2>&1);
my %swap;
if ( $swap_buf ) {
foreach my $line ( split m{\n}xms, $swap_buf ) {
chomp $line;
next if $line =~ m{ \A Device }xms;
@swap{ qw/ path size used / } = split m{\s+}xms, $line;
last;
}
}
my %info;
$info{manufacturer} = $MANUFACTURER->{ $^O };
$info{build_type} = undef;
$info{owner} = undef;
$info{organization} = undef;
lib/Sys/Info/Driver/BSD/OS.pm view on Meta::CPAN
$self->_file_has_substr('/etc/rc.d/clearmedia', qr{\A $dbsd}xms );
return; #Â fail!
}
sub _populate_osversion {
return if %OSVERSION;
my $self = shift;
require POSIX;
my($sysname, $nodename, $release, $version, $machine) = POSIX::uname();
my(undef, $raw) = split m{\#}xms, $version;
my($date, undef) = split m{ \s+ \S+ \z }xms, $raw;
my $build_date = $date ? $self->date2time( $date ) : undef;
my $build = $date;
my $edition = $self->_probe_edition( $sysname );
my $kernel = '???';
%OSVERSION = (
NAME => $sysname,
NAME_EDITION => $edition ? "$sysname ($edition)" : $sysname,
LONGNAME => q{}, # will be set below
( run in 1.951 second using v1.01-cache-2.11-cpan-71847e10f99 )