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 )